草庐IT

c++ - 使用 std::map 的 Visual Studio 11 编译时错误

以下代码可以使用gcc-4.5.1编译,但不能在VisualStudio11中编译。#include#includetypedefstd::pair>pairus;intmain(){std::map>x;std::arraytroll={1,2,3,4};x.insert(pairus(1,troll));autoz=x[1];}1现在映射到std::arraytroll.插入效果很好,程序可以编译。但是,一旦我尝试autoz=x[1]->因此试图获得1的数组troll被映射到,程序不编译并出现以下错误:errorC2512:'std::array::array':没有合适的默认构造

c++ - C++11 中是否有在模板中获取成员指针类型的方法?

我知道这在C++03中是不可能的,但我希望有一些新的巫术允许我这样做。见下文:templatestructBinder{templatevoidAddMatch();};structTestType{inti;};intmain(intargc,char**argv){Binderb;b.AddMatch();//Ihavetodothisnowb.AddMatch();//I'dliketobeabletodothis(i.e.inferfieldtype)}在C++11中有什么方法可以做到这一点吗?decltype有帮助吗?**更新:使用Vlad的示例,我在想这样的事情会起作用(警

C++11 元编程 - 在编译期间查找枚举值(值包含间隙)

有没有办法在编译时验证给定的值在给定枚举的值范围内,因此有效?enummyenum{val1=10,val2=30,val3=45}templateclassmyClass{...}myClassa;//fails,OKmyClassb;//compilesOKmyClassc;//compiles,NOTOK!在那里使用第二个模板非类型bool参数会很有用,该bool值的值将由元函数给出,给定的值将验证该值是否在myenum的值内。我查看了各种与枚举相关的问题,例如如何迭代枚举,但似乎无法完成。 最佳答案 enummyenum{v

C++11:Variadic模板函数参数包扩展执行顺序

考虑以下代码:templatesize_tf(Tt,size_t&x){returnx++;}templatevoidg(Args...args){size_tx=0;size_ty[]={f(args,x)...};for(size_ti=0;iC++11标准保证断言不会触发吗?为什么或为什么不? 最佳答案 是的,它保证不会开火。请参阅以下引述:§14.5.3可变模板:Packexpansionscanoccurin[...]aninitializer-list;thepatternisaninitializer-clause.§

c++ - 为什么在使用嵌套的 OpenMP pragma 时 c++11 线程变得不可连接?

以下代码应该非常简单,但在尝试使用嵌套的OpenMP代码在线程上执行.join()时,似乎最终陷入了挂起状态。使用GCC编译器4.7.2x64和来自http://sourceforge.net/projects/mingwbuilds的pthreads使用g++threadexample.cpp-Wall-std=c++11-fopenmp-othreads//threadexample.cpp#include#include#includeusingnamespacestd;voidhello(inta){#pragmaompparallelforfor(inti=0;i

c++ - XCode 4.5 观察点不工作

我正在尝试在iOS上的Xcode4.5中调试C++代码,在连接的iPad2上运行该应用程序。我在我的代码上设置了一个常规断点,当我点击它时,我查看我的局部变量,单击一个变量并选择“Watchxxxxx”。lldb控制台显示:error:failedtocreatewatchpointform_step如果我尝试使用以下命令在控制台中手动设置它,结果相同:wsvxxxxx我得到:error:Wathpointcreationfailed(addr=0x.....size=4)error:sendinggdbwatchpointpacketfailed我正在使用LLDB使用调试配置运行。有

c++ - 如何在 Visual Studio 2010 速成版上启用 C++11 编译器?

我正在使用使用lambda的tbb::parallel_for函数。我收到以下代码的语法错误:voidparallel_relax(Classobject,std::vectorverList){tbb::parallel_for(blocked_range(0,verList.size()),[=](constblocked_range&r){for(Vertex*vit=r.begin();vit!=r.end();++vit){Vertex*v=vit;object.function(v);}});}语法错误:syntaxerror:'['1>main.cpp(16):error

c++ - 是否有用于检测 C++11 标准库的预处理器指令?

是否可以使用预处理器指令确定C++标准库是否支持C++11?我目前正在开发一个使用C++11语言方言的项目,但使用不支持C++11的C++标准库(我需要它才能与非C++11库链接).我知道我可以使用#if__cplusplus>=201103L测试C++11支持,但在我的例子中,这将评估为true。我需要了解C++标准库对C++11的支持。 最佳答案 功能测试是标准委员会朝着下一个C++14标准(及更高标准)迈进的一个积极研究方向。有一个第10研究组可以免费访问mailinglist正在讨论当前发展的地方。对于下一次session,

c++ - 比较rdtsc clock和c++11 std::chrono::high_resolution_clock产生的时间测量结果

我正在尝试比较由c++11std::chrono::high_resolution_clock和下面的rdtsc_clock时钟测量的时间。从high_resolution_clock,我得到类似11000、3000、1000、0的结果。从rdtsc_clock,我得到134、15、91等。为什么他们的结果看起来如此不同?根据我的直觉,我相信rdtsc_clock正在呈现~accurate结果,对吗?templatestructrdtsc_clock{typedefunsignedlonglongrep;typedefstd::ratioperiod;typedefstd::chron

c++ - 随机双C++11

下面的代码展示了如何在C++11中随机加倍。每次在这个解决方案中,当我运行这个程序时,结果都是一样的——我不知道为什么?如何更改它以在每次运行程序时获得不同的解决方案?#includeintmain(intargc,char**argv){doublelower_bound=0.;doubleupper_bound=1.;std::uniform_real_distributionunif(lower_bound,upper_bound);std::default_random_enginere;doublea_random_double=unif(re);cout