内容见《STL源码剖析》第1.9节。
书中编译器:cygnus C++ 2.91.57 for Windows。
本文编译器:ubuntu g++ 4.4.3版本。
说明:书中采用编译器过旧,有编译出错情况,以下代码已做处理。
1、测试class template中拥有static data members
1config3.cpp
//测试class template中拥有static data members.
#include <iostream>
using namespace std;
template <typename T>
class testclass
{
public:
static int _data;
};
template<> int testclass<int>::_data = 1;
template<> int testclass<char>::_data = 2;
int main()
{
cout<<testclass<int>::_data<<endl;
cout<<testclass<char>::_data<<endl;
testclass<int> obji1, obji2;
testclass<char> objc1, objc2;
cout<<obji1._data<<endl;
cout<<obji2._data<<endl;
cout<<objc1._data<<endl;
cout<<objc2._data<<endl;
obji1._data = 3;
objc2._data = 4;
cout<<obji1._data<<endl;
cout<<obji2._data<<endl;
cout<<objc1._data<<endl;
cout<<objc2._data<<endl;
return 1;
}
2、测试class template 指针和const参数支持
1config5.cpp
//测试class template 指针和const参数支持
#include <iostream>
using namespace std;
template <class I, class O>
struct testClass
{
testClass()
{
cout<<"I, O"<<endl;
}
};
template <class T>
struct testClass<T*, T*>
{
testClass()
{
cout<<&#