四、宏: (其实呢, 我们所有的宏都包含在了 "stl_config.h"头文件中。)
//这些宏是怎么判断是否需要定义:是否有指定的宏,还有一些特定的编译器也可能支持。
4.1、 __STL_THROW_RANGE_ERRORS //允许抛出范围异常。
4.2、 __STL_NO_BOOL //没有定义原生_BOOL : if !define(_BOOL) __STL_NO_BOOL
4.3、 __STL_HAS_WCHAR_T //有wchar_t类型。 if define(_WHCAR_T_IS_KEYWORD) define __STL_HAS_WCHAR_T
4.4、 __STL_NO_DRAND48 //不存在drand48 这个函数
4.5、 __STL_STATIC_TEMPLATE_MEMBER_BUG //不支持在模板类中定义一个静态成员。
4.6、 __STL_STATIC_CONST_INIT_BUG //支持static const int 类型可以直接在类中初始化。
4.7、 __STL_CLASS_PARTIAL_SPECIALIZATION //支持局部特化。
4.8、 __STL_PARTIAL_SPECIALIZATION_SYNTAX //类模板的部分排序(最近似推导)。
4.9、 __STL_FUNCTION_TMPL_PARTIAL_ORDER //函数模板的部分排序(最近似推导)。
4.10、__STL_MEMBER_TEMPLATES //支持模板类中还可以存在模板函数。
4.11、__STL_MEMBER_TEMPLATE_CLASSES //支持模板类中存在内部类(内部类只能在当前类中进行使用)。
4.12、__STL_TEMPLATE_PRIENDS //支持一个模板类可以成为其他类的友元类。
4.13、__STL_EXPLICIT_FUNCTION_TMPL_ARGS //支持函数对模板参数的推导。
4.14、__STL_LIMITED_DEFAULT_TEMPLATES //支持前一个模板参数为后一个模板的默认值。
4.15、__STL_NON_TYPE_TMPL_PARAM_BUG //支持 template<int size> 这种情况。
4.16、__SGI_STL_NO_ARROW_OPERATOR //不支持iterator 重载 -> 操作符。
4.17、__STL_DEFAULT_CONSTRUCTOR_BUG //不支持 类似 int(10) 这种做法。
4.18、__STL_USE_EXCEPTIONS //支持异常。
4.19、__STL_USE_NAMESPACES //支持命名空间。
4.20、__STL_NO_EXCEPTION_HEADER //没有exception的头文件<exception>
4.21、__STL_NO_BAD_ALLOC //没有<new> 或者 <new>头文件中没有bad_alloc class.
4.22、__STL_LONG_LONG //支持long long
4.23、__STL_USE_CONCEPT_CHECKS
4.24、__STL_NO_USING_CLAUSE_IN_CLASS //不支持类定义当中使用using。
4.25、__STL_NO_FRIEND_TEMPLATE_CLASS //不支持模板类成为其他类的有元。
4.26、__STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE //不支持一个指针成为一个模板参数。
4.27、__STL_MEMBER_TEMPLATE_KEYWORD
4.28、使用实例:
4.28.1、#define _BEGIN_NAMESPACE namespace xiaohai{ //使用一个前的begin 和一个后的end 来代替namespace
#define _END_NAMESPACE };