http://boost.ez2learn.com/libs/config/doc/html/boost_config/boost_macro_reference.html
以下宏都是用於描述C++标准所要求的某个特性的,如果下面当中的某一个宏被定义,则表示该编译器存在一个与标准不符的缺陷。
宏 |
节 |
说明 |
---|---|---|
|
编译器 |
编译器存在某些偏特化方面的缺陷 - 很可能是 Borland C++ Builder. |
|
编译器 |
如果在当前域中有对被查找符号的 using 声明,则ADL查找失败。例如, |
|
编译器 |
编译器定位并查找那些在执行参数相关查找时实际上不应查找的名字空间。 |
|
编译器 |
编译器没有实现ADL(又称Koenig查找); 请见 std::3.4.2 [basic.koenig.lookup] |
|
标准库 |
如果编译器/标准库提供非标准或有问题的 |
|
平台 |
平台不提供字符分类操作的函数 |
|
编译器 |
如果针对cv-限定类型的模板特化与针对非cv-限定类型的特化冲突。 |
|
编译器 |
如果针对cv-void类型的模板特化与针对void的特化冲突。 |
|
平台 |
平台不提供 |
|
平台 |
平台不提供 |
|
编译器 |
编译器不能编译带有受限基类的嵌套类: template<typename T> struct foo : { template<typename U> struct bar : public U {}; }; |
|
编译器 |
模板值参数不能为受限类型,例如: template<class T, typename T::type value> class X { ... };
|
|
标准库 |
标准库未将 |
|
编译器 |
编译器不支持异常处理(多数嵌入式平台的C++编译器都要求这一设置)。注意,并不要求 boost 库一定要遵守这一配置设置 - 在某些情形下这样做是不可能的。遵守这一设置的库通常在发生严重错误时会退出 - 已经警告你了! |
|
编译器 |
在调用函数模板实例时只能使用被推导的模板参数。 |
|
编译器 |
编译器不执行函数模板分类(function template ordering)或执行的方法不正确。 // #1 template<class T> void f(T); // #2 template<class T,class U> void f(T(*)(U)); void bar(int); f(&bar); // 应选择 #2.
|
|
编译器 |
编译器违犯 std::9.4.2/4. |
|
编译器 |
C++实现不提供 |
|
标准库 |
标准库缺少 |
|
标准库 |
标准库缺少 |
|
编译器 |
C++编译器不支持抽像类型的 SFINAE, 见 Core Language DR337, 不过它当前还未加入标准。幸好多数编译器支持 SFINAE 也支持这份 DR. |
|
标准库 |
C++实现不提供 |
|
标准库 |
在编译期,像 |
|
标准库 |
没有 |
|
编译器 |
编译器不支持模板类的单独成员函数特化。 |
|
编译器 |
如果编译器支持成员模板,但是在访问成员模板类时不使用 template 关键字。 |
|
编译器 |
不支持C++标准 14.5.3 所描述的成员模板友元语法 ( |
|
编译器 |
不完全支持成员模板函数。 |
|
标准库 |
没有 |
|
编译器 |
编译器要求继承的操作符友元函数在名字空间域中定义,然后 using 给 boost. 可能是 GCC 的特殊方式。相关例子请见 |
|
编译器 |
编译器不能正确处理那些依赖於主模板中的缺省参数的偏特化。 |
|
编译器 |
编译器不能正确处理常量成员函数的指针,要防止在重载函数模板时使用它们。相关例子请见 |
|
编译器 |
成员指针不能作为模板参数使用。 |
|
编译器 |
编译器误读了 8.5.1, 将含私有或保护的成员函数的类视为 non-aggregate. |
|
编译器 |
编译器不支持 "Substitution Failure Is Not An Error" 的元编程惯用法。 |
|
标准库 |
C++标准库没有提供符合标准的 |
|
标准库 |
平台没有符合标准的 |
|
标准库 |
C++ 实现不提供 |
|
标准库 |
编译器不提供符合标准的 |
|
标准库 |
标准库没有 |
|
标准库 |
标准库没有符合标准的 |
|
标准库 |
C++标准库不提供 |
|
标准库 |
如果标准库的输出迭代器不是可赋值的,就定义它。 |
|
标准库 |
<typeinfo> 头文件将 |
|
标准库 |
标准库没有符合标准的 |
|
标准库 |
标准库没有 |
|
标准库 |
标准库没有 |
|
编译器, 平台 |
C++中的C库函数标准头文件(即 |
|
标准库 |
C++实现不提供 |
|
平台 |
平台没有符合标准的 |
|
编译器 |
不支持类模板偏特化(14.5.4 [temp.class.spec]). |
|
标准库 |
标准库不提供模板化的 iostream 类。 |
|
标准库 |
标准库没有为容器提供模板化的迭代器结构函数。 |
|
编译器 |
编译器不支持模板模板参数。 |
|
编译器 |
编译器根本不支持 typeid 操作符。 |
|
编译器 |
如果 return 语句不可到达,则不要求必须有 return 语句,但是有些编译器坚持要有,如果发生这种情形,会导致一串警告。 |
|
编译器 |
编译器不接受用 using 声明将一个函数从基类的 typename 带入到派生类中,如果派生类中已经有同名的函数。 |
|
编译器 |
编译器不接受用 using 声明将一个模板类或模板函数从另一个名字空间导入。原本 Borland 存在导入到全局名字空间或从全局名字空间导入的问题,后来扩展以 MSVC6,它存在导入模板类(但不是模板函数)的问题。 |
|
编译器 |
编译器不允许一个 void 函数返回对另一个 void 函数的调用结果。 void f() {} void g() { return f(); }
|
以下宏描述了不被C++标准要求的一些特性。该宏只在该特性存在时被定义。
宏 |
节 |
说明 |
---|---|---|
|
平台 |
平台支持 BeOS 风格的线程。 |
|
平台 |
平台有 POSIX API |
|
编译器 |
编译器用 |
|