是否有用于检测C++;11标准图书馆? P>是否可以使用预处理器指令(C++)确定C++标准库是否支持C++ 11? 我目前正在研究一个使用C++ 11语言方言的项目,但是用C++ C++标准库,而不需要C++ 11的支持(我需要这个能与非C++ 11库链接)。

是否有用于检测C++;11标准图书馆? P>是否可以使用预处理器指令(C++)确定C++标准库是否支持C++ 11? 我目前正在研究一个使用C++ 11语言方言的项目,但是用C++ C++标准库,而不需要C++ 11的支持(我需要这个能与非C++ 11库链接)。,c++,c++11,c-preprocessor,libc++,C++,C++11,C Preprocessor,Libc++,我知道我可以使用#if uu cplusplus>=201103L测试C++11支持,但在我的情况下,这将评估为true。我需要知道C++标准库支持C++ 11。< /P> < P>我的问题是在iOS平台上C++代码库的选择是在 LBSTD++(GNU C++标准库)< /> >和 LBC+ +(LVVM C++标准库,C++ 11支持)< /C>。我最终使用了\u GLIBCXX\u。完整的代码最终是: #ifndef _GLIBCXX_ template <class T> T&

我知道我可以使用
#if uu cplusplus>=201103L
测试C++11支持,但在我的情况下,这将评估为true。我需要知道C++标准库支持C++ 11。< /P> < P>我的问题是在iOS平台上C++代码库的选择是在<代码> LBSTD++(GNU C++标准库)< /> >和<代码> LBC+ +(LVVM C++标准库,C++ 11支持)< /C>。我最终使用了
\u GLIBCXX\u
。完整的代码最终是:

#ifndef _GLIBCXX_
template <class T>
T&& move (T& arg) noexcept {
    return static_cast<T&&>(arg);
}
#endif
\ifndef\u GLIBCXX_
模板
T&move(T&arg)无例外{
返回静态_cast(arg);
}
#恩迪夫

特性测试是标准委员会朝着下一个C++14标准(以及更高标准)发展的一个积极的研究方向。在讨论当前发展的地方,有一个研究组10,其自身可自由访问。对于下一次会议,这已经提交。

相关:“我知道我可以使用
#if u cplusplus>=201103L
”测试C++11支持-不,甚至不是这样。考虑到大多数编译器只支持C++11的一个子集(尽管该子集可能很大),这个
\uu cplusplus
宏完全没有用处。标准功能(无论是语言还是库)的可移植测试仍然是一个尚未解决的问题(尽管正如TemplateRex在回答中指出的那样,正在尝试解决它)。对我来说,您的问题听起来像是需要一个配置工具,如CMake或autotools。它们会为您进行检查,并生成一个标头,其中包含可以计算的宏。如果您只有一个库,您可能会要求用户提供一个宏,但这仍然是一个糟糕的解决方案。我猜您的意思是
\uu GLIBCXX\uuu
,您的意思是
ifdef
而不是
ifndef
?您的测试假设libstdc++从未支持C++11,但事实并非如此,只有Mac附带的旧版本不支持C++11。。。。一年后。。。实际上,我最终使用了自己的手动预处理器定义,而不是依赖于标准库的自动检查。