检查C ++ 0x算法添加的可用性

问题描述

| 我试图找出给定实现支持哪些算法标头的附加功能(gcc和MSVC就足够了)。 一种简单的方法是与执行核心功能方法相同:检查编译器版本并定义一个宏(如果支持一种语言功能)。不幸的是,我找不到显示任何一个编译器版本号的列表。 仅仅检查一个通用的C ++ 0x宏(GXX_EXPERIMENTAL或__cplusplus)就足够了吗?还是应该检查编译器的更改列表并根据这些列表构建宏? http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x     

解决方法

由于所有编译器供应商都提供了哪个版本的可用列表,并且您还是要测试功能,因此我将使用编译器版本来检查特定功能。或者要求用户至少使用一个好的版本,而不用担心。
__cplusplus
不一定是C ++ 0x宏,它什么也没有告诉您。自GCC 4.3起已经存在ѭ1exist,所以这也很没用。 这是给海湾合作委员会的。 这是针对MSVC的。 (请注意:部分实现意味着破坏) 这是给英特尔的。 在这里,您可以找到要针对特定​​版本的编译器检查的宏。     ,据我所知,唯一合适的解决方案是拥有一个构建脚本,该脚本尝试编译和运行使用该功能并具有运行时断言的文件。根据结果​​,在配置文件中添加
#define CONFIG_NO_FEATURENAME
或类似名称,并使用
#ifndef
保护您的使用和解决方法。 这样可以检查是否 该功能可用 功能正常运行(取决于断言的正确性)