草庐IT

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

c++ - 启用 c++11 时 c++ 递归模板的奇怪行为

我试图理解我收到的一些递归C++模板代码,但遇到了一些奇怪的行为。出于某种原因,编译器似乎能够在编译时添加两个值,但必须在运行时进行左移。即便如此,只有当我尝试在启用c++11的情况下进行构建时才会出现问题。代码(我已经归结,你稍后会看到)定义了两对模板——一对名为shft和shft_aux和一对名为add和add_aux递归生成它们自己。顺便说一句,add模板不应该有用,它的唯一目的是演示问题,而不是生成实际的min值。如果我在没有命令行参数的情况下编译这段代码,它编译得很好。但是,如果我指定-std=c++11-stdlib=libc++,add_aux上的static_asser

c++ - 带状态的 C+11 策略模式

StrategyPattern的例子从书中,HeadFirstDesignPatterns,是用C++编写的[here].我正在练习根据EffectiveGoFPatternswithC++11andBoost将其转换为C++11样式如下所示。嘎嘎行为:structQuack{staticvoidquack(){std::cout飞行行为:structFlyWithWings{public:staticvoidfly(){std::coutDuck层次结构:classDuck{public:typedefstd::functionQUACK;typedefstd::functionFL

c++ - 这句话在 C++11 标准的第 §3.2/2 段中是什么意思?

该句子是段落§3.2/2的一部分:Avariablewhosenameappearsasapotentially-evaluatedexpressionisodr-usedunlessitisanobjectthatsatisfiestherequirementsforappearinginaconstantexpression(5.19)andthelvalue-to-rvalueconversion(4.1)isimmediatelyapplied.上面加粗的句子到底是什么意思?编辑:这个问题的答案被认为是重复的,没有说任何可以回答我的问题的内容。 最佳

C++ 11 线程,错误调用纯虚函数

这是我正在尝试编译的非常简单的C++11线程API代码#include#includeusingnamespacestd;voidthreadFunction(void){cout关于将其编译为g++thread1.cpp-pthread-std=c++11我收到以下错误纯虚方法调用在没有事件异常的情况下终止调用中止有什么问题吗,求大神帮忙请注意,我是在配备ARMA8处理器的BeagleboneBlack上编译的 最佳答案 这是libstdc++或Clang中的错误,具体取决于您询问的对象。如果您使用的是2013年10月之后发布的C

c++ - 在 C++11 中使用的前向声明

我试图在不包含头文件的情况下在另一个头文件中使用对象的类型别名。我的简化版代码是://A.h#includeusingVector=std::vector;====================================================//B.husingVector;//forwarddeclarationbutnotworking!(Vectorhasnotbeeddeclared)intfoo(Vector*);====================================================//B.cpp#include"A.h"v

c++ - 让 GCC 在 C++11 模式下在 FreeBSD 上工作

如何在FreeBSD10上获得基于GCC的C++11设置?似乎FreeBSD上最近的GCC版本附带的标准库被破坏了。我已经安装了端口gcc49然后尝试编译它:#includeintmain(){autostr=std::to_string(42);str=std::to_string(42ull);str=std::to_string(4.2);str.clear();return0;}这给了我一个错误:g++49-v-std=c++11foo.ccUsingbuilt-inspecs.COLLECT_GCC=g++49COLLECT_LTO_WRAPPER=/usr/local/li

c++11 将 std::tuple 解压到虚拟成员函数中

完整故事:我正在尝试构建一个看起来有点像这样的框架:#include#includeusingnamespacestd;//thisclassallowsusertocall"run"withoutanyargsclasssimulation_base{public:intrun(){execute_simulation_wrapped();};protected:virtualintexecute_simulation_wrapped();{return0;};}//thisclassfunnelssomestoredinputsintoasoon-to-be-overriddenm