【发布时间】:2013-07-18 16:07:28
【问题描述】:
是否可以使用预处理器指令确定 C++ 标准库是否支持 C++11?
我目前正在开发一个使用 C++11 语言方言的项目,但使用的是不支持 C++11 的 C++ 标准库(我需要它才能与非 C++11 库链接)。
我知道我可以使用#if __cplusplus >= 201103L 测试 C++11 支持,但在我的情况下,这将评估为 true。我需要了解 C++ 标准库对 C++11 的支持。
【问题讨论】:
-
“我知道我可以使用
#if __cplusplus >= 201103L测试 C++11 支持” - 不,甚至不是。鉴于大多数编译器仅支持 C++11 的一个子集(尽管该子集可能很大),这个__cplusplus宏完全没用。可移植地测试标准功能(无论是语言还是库)仍然是一个未解决的问题(尽管 尝试 正在解决它,正如 TemplateRex 在他的回答中指出的那样) . -
对我来说,您的问题听起来像是您需要像 CMake 或 autotools 这样的配置工具。他们会为您检查并生成一个包含您可以评估的宏的标题。如果您只有一个库,您可能会要求您的用户提供一个宏 - 这仍然是一个糟糕的解决方案。
标签: c++ c++11 c-preprocessor libc++