草庐IT

0x0000007c

全部标签

c++ - 如何在 VS2008 中指定 64 位 unsigned int const 0x8000000000000000?

我读到了Microsoft特定的整数常量后缀“i64”。我想做一个无符号转换到一个ULONGLONG。ULONGLONGbigNum64=​​0x800000000000000i64>>myval;在普通的C语言中,我会使用后缀“U”,例如类似的32位操作将是ULONGbigNum32=0x80000000U>>myval;我不希望2的补码扩展通过高位传播。我想要一个64位常量数的无符号移位。我认为我的第一个语句将进行SIGNED右移。我尝试了0x800000000000000i64U和0x800000000000000u64但出现编译器错误。 最佳答案

c++ - 在 C++0x 中专门针对 lambda 模板

我编写了一个特征类,可以让我提取有关C++0x中函数或函数对象的参数和类型的信息(使用gcc4.5.0测试)。一般情况下处理函数对象:templatestructfunction_traits{templatestruct_internal{};templatestruct_internal{//...};typedeftypename_internal::>;};然后我对全局范围内的普通函数进行了专门化:templatestructfunction_traits{//...};这很好用,我可以将函数传递给模板或函数对象,它可以正常工作:templatevoidfoo(Ff){type

c++ - 在 C++0x 中传递/移动构造函数的参数

如果我有一个带有n个参数的构造函数,这样任何参数都可以是右值和左值。是否可以通过右值的移动语义来支持这一点,而无需为每个可能的右值/左值组合编写2^n构造函数? 最佳答案 你按值取每一个,像这样:structfoo{foo(std::strings,barb,quxq):mS(std::move(s)),mB(std::move(b)),mQ(std::move(q)){}std::stringmS;barmB;quxmQ;};参数对函数参数的初始化将是复制构造函数或移动构造函数。从那里,您只需将函数参数值移动到您的成员变量中。记住

c++ - 为什么没有将 yield 添加到 C++0x 中?

编辑,在我问这个问题11年后:我觉得问这个问题是正确的!C++20finallydidsomethingcloseenough.原始问题如下。--我在我的许多Python程序中都使用了yield,它真的在很多情况下都可以清理代码。我bloggedaboutit它是我网站的热门网页之一。C#还提供yield——它是通过调用方的状态保持来实现的,通过一个自动生成的类来保持状态、函数的局部变量等来完成。我目前正在阅读有关C++0x及其添加的内容;在阅读C++0x中lambdas的实现时,我发现它也是通过自动生成的类完成的,配备了operator()存储lambda代码。我的脑海中自然形成了一

c++ - std::sort 是否应该与 c++0x/c++11 中的 lambda 函数一起使用?

我尝试将lambda函数与sort一起使用,但出现“段错误”错误。我设法将代码简化为以下内容:#include#includeintmain(){constintlen=18;intintArr[len];for(inti=0;ib?1:0));});return0;}我在Ubuntu11.04(x64)中使用编译和运行这段代码g++-std=gnu++0xtest2.cpp&&./a.out.它会打印很多对表单(large_integer,1008),一对(0,1008)并以“Segmentationfault”退出。 最佳答案

c++ - std::transform 使用 C++0x lambda 表达式

这是如何在C++0x中完成的?std::vectormyv1;std::transform(myv1.begin(),myv1.end(),myv1.begin(),std::bind1st(std::multiplies(),3));原始问题和解决方案是here. 最佳答案 std::transform(myv1.begin(),myv1.end(),myv1.begin(),[](doubled)->double{returnd*3;}); 关于c++-std::transform使

c++ - 在 C++0x lambda 中通过复制捕获引用变量

根据thisquestion的回答和评论,当引用变量被值捕获时,lambda对象应该复制被引用的对象,而不是引用本身。但是,GCC似乎没有这样做。使用以下测试:#include#includeusingstd::cout;usingstd::endl;intmain(intargc,char**argv){inti=10;int&ir=i;[=]{cout使用GCC4.5.1编译,使用-std=c++0x,然后运行会得到以下输出:valuecapturei:10ir:-226727748&i:0x7ffff27c68a0&ir:0x7ffff27c68a4referencecaptur

c++ - GNU C++ 如何检查 -std=c++0x 何时生效?

我的系统编译器(gcc42)可以正常使用我想要的TR1功能,但尝试支持系统以外的较新编译器版本,尝试访问TR1header#error需要-std=c++0x选项,因为关于它如何与库或类似的一些集线器连接。/usr/local/lib/gcc45/include/c++/bits/c++0x_warning.h:31:2:error:#errorThisfilerequirescompilerandlibrarysupportfortheupcomingISOC++standard,C++0x.Thissupportiscurrentlyexperimental,andmustbeen

c++ - 如何使用 C++0x 支持构建 Boost?

我不知道如何使用C++0x编译器构建Boost。必须给bjam哪个选项?是否应该修改user.config文件?有人可以帮助我吗?最好,维森特 最佳答案 我找到了答案。我正在等待类似“std”的功能,并将其命名如下:bjamstd=0x但目前我们需要使用低级变量cxxflags并添加特定的编译器标志。例如对于gcc,我们可以这样做bjamtoolset=gcccxxflags=-std=gnu++0x其他编译器需要不同的设置。等待新的Boost.Build功能,您还可以定义自己的工具集,如下所示:添加user.config或site

c++ - 你最喜欢的 C++0x 特性是什么?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前。我们很多人都知道(还有很多人不知道),C++目前正在为国际标准的下一个修订版进行最终起草,预计将在大约2年内发布。目前可从committeewebsite获取草稿和论文。.正在添加各种新功能,其中最大的是概念和lambda。有很全面的Wikipediaarticle具有许多新功能。GCC4.3及更高版本实现someC++0xfeatures.就新功能