文章目录
- stl_config.h 组态
-
-
- (1) __STL_STATIC_TEMPLATE_MEMBER_BUG
- (3) __STL_CLASS_PARTIAL_SPECIALIZATION
- (3) __STL_FUNCTION_TMPL_PARTILA_ORDER
- (4) __STL_EXPLICIT_FUNCTION_TMPL_ARGS
- (5) __STL_LIMITED_DEFAULT_TEMPLATES
- (6) __STL_NON_TYPE_TMPL_RARAM_BUG
- (7) __STL_NULL_TMPL_ARGS(bound friend template friend)
- (8) __STL_TEMPLATE_NULL (class template explicit specialization)
-
stl_config.h 组态
参考自《STL 源码剖析》
(1) __STL_STATIC_TEMPLATE_MEMBER_BUG
可以在类中定义全局变量,然后再类外根据参数定义值 ,定义类之后全局变量的值就是在类外定义的值。
template <typename T>
class test {
public:
static int data;
};
int test<int>::date = 1;
int test<char>::date = 2;
(3) __STL_CLASS_PARTIAL_SPECIALIZATION
使用template定义类时可以使用const *等做特殊设计。
template <class T>
struct test<T*, const T* > {
....};
(3) __STL_FUNCTION_TMPL_PARTILA_ORDER
函数模板部分特例化,对于一个函数模板,如果定义了另一个函数模板且函数名相同,会根据template的参数表进行调用,要注意的是,第二个函数模板需要知道参数,可以在函数后面加上例如,max<T,T>或者函数之前声明类struct<T,T>.
template<typename T1, typename T2>
struct Bar
{
void operator()(T1 const& t1, T2 const& t2)
{
std::cerr << "In Bar<T1, T2>(" << t1 << ", " << t2 << ")\n";
}
};