STL源代码分析(ch 1)组态2
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL源代码分析(ch 1)组态2相关的知识,希望对你有一定的参考价值。
4. __STL_MEMBER_TEMPLATES
模板类中包含模板成员,是否支持template members of classes
class vec
public:
typedef T value_type;
typedef value_type* iterator;
template<class I>
void insert(iterator position, I first, I last)
cout << "insert()" << endl;
;
int main()
int ia[5] = 0,1,2,3,4 ;
vec<int> a;
vec<int>::iterator ite;
a.insert(ite, ia, ia + 5);
5. __STL_LIMITED_DEFAULT_TEMPLAES
用到前一个模板的模板形参的某一个具现体作为当前模板的模板形参的默认值
template <class T,class Alloc=alloc,size_t BufSiz=0>
class deque
public:
deque() cout << deque() << endl;
;
template <class T,class Sequence=deque<T>>
class stack
public:
stack() cout << "Stack" << endl;
private:
Sequence c;
;
int main()
stack<int> x;
6. __STL_NON_TYPE_TMPL_PARAM_BUG
类模板是否使用非类型模板参数(non-type template parameters)
通常它们只能是常数整数(constant integral values )包括枚举,或者是指向外部链接的指针。
不能把float,class-type类型的对象,内部链接(internal linkage )对象,作为非类型模板参数。
template <class T,class Alloc=alloc,size_t BufSiz=0> //BufSiz即为非类型模板。
class deque
public:
deque() cout << deque() << endl;
;
7.__STL_TEMPLATE_NULL
指定一种或多种模板形参的实际值或实际类型,作为特殊情况
#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
# define __STL_TEMPLATE_NULL template<>
#else
# define __STL_TEMPLATE_NULL
#endif
template<class type> struct __type_traits ...;//非特化情况均使用这个
__STL_TEMPLATE_NULL struct __type_traits<char> ... ;//特化char情况
template<class Key> struct hash ;//非特化情况均使用这个
__STL_TEMPLATE_NULL struct hash<char> ... ;//特化char情况
__STL_TEMPLATE_NULL struct hash<unsgned char> ... ;//特化unsigned char情况
=>
template<class type> struct __type_traits ...;//非特化情况均使用这个
template<> struct __type_traits<char> ... ;//特化char情况
template<class Key> struct hash ;//非特化情况均使用这个
template<> struct hash<char> ... ;//特化char情况
template<> struct hash<unsgned char> ... ;//特化unsigned char情况
以上是关于STL源代码分析(ch 1)组态2的主要内容,如果未能解决你的问题,请参考以下文章
STL源代码分析(ch2 内存分配)uninitialized_fill