C++模版全掌握(实例)

下面列出了模版的常用情况:

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长//1. 模板类静态成员
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <typename T> struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
static int _data; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<> int testClass<char>::_data = 1
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<> int testClass<long>::_data = 2
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main( void ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    cout 
<< boolalpha << (1==testClass<char>::_data) << endl; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    cout 
<< boolalpha << (2==testClass<long>::_data) << endl; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//2. 模板类偏特化 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <class I, class O> struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass() 
{ cout << "I, O" << endl; } 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class T> struct testClass<T*, T*> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass() 
{ cout << "T*, T*" << endl; } 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class T> struct testClass<const T*, T*> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass() 
{ cout << "const T*, T*" << endl; } 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main( void ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<intchar> obj1; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<int*int*> obj2; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<const int*int*> obj3; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//3.类模版+函数模版
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template <class T> struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
void swap( testClass<T>& ) { cout << "swap()" << endl; } 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class T> inline void swap( testClass<T>& x, testClass<T>& y ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    x.swap( y ); 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main( void )
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<int> obj1; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<int> obj2; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    swap( obj1, obj2 ); 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//4. 类成员函数模板 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
struct testClass
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    template 
<class T> void mfun( const T& t )
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长        cout 
<< t << endl; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    }
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    template 
<class T> operator T() 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长        
return T(); 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    }
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main( void ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass obj; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    obj.mfun( 
1 ); 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
int i = obj; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    cout 
<< i << endl; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//5. 缺省模板参数推导 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <class T> struct test 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    T a; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class I, class O=test<I> > struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    I b; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    O c; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//6. 非类型模板参数 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <class T, int n> struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    T _t; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass() : _t(n) 

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    }
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main( void ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<int,1> obj1; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    testClass
<int,2> obj2; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//7. 空模板参数 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <class T> struct testClass; 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class T> bool operator==const testClass<T>&const testClass<T>& ) 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
return false
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<class T> struct testClass 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    friend 
bool operator== <>const testClass&const testClass& ); 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//8. template template 类
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
struct Widget1 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    T foo()
{} 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<template<class T>class X> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
struct Widget2
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    cout
<< 3 << '\n';
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长


//参考:http://www.cnblogs.com/dayouluo/archive/2005/05/14/155092.html

特别注意:类,全局函数,类的成员函数都可以特化,但是只有类可以半特化,全局函数和类的成员函数不可以半特化。

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长//-------------------------------------------
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//1 类的特化和类成员函数的特化
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<typename T>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
class Widget1
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
public:
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
void Fun1()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长        
//generic implementation
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
    }

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
class Widget1<int>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
public:
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
void Fun1()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    }

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void Widget1<char>::Fun1()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
//specialization
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  Widget1
<char> w;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  w.Fun1();
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  Widget1
<int> w2;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  w2.Fun1();
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//-------------------------------------------
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//2 全局函数的特化和重载
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<typename T1, typename T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长T1 Fun2(T2)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//下面2个应该是属于重载
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<typename T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
char Fun2(T2)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
char c;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
return c;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T1>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长T1 Fun2(
char)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//全局函数的特化
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
char Fun2<char,int>(int)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
char c;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
return c;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//-------------------------------------------
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//3 全局函数不能半特化,以下编译失败
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template <typename T1,typename T2> //原型1
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void Test(T1,T2)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template 
<typename T1>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void Test<T1,T1>(T1,T1)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T1, typename T2> //原型2
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
T1 Fun2(T2)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<typename T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int Fun2<int,T2>(T2)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T1>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长T1 Fun2
<T1,int>(int)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长T Fun2
<T,T>(T)
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
////-------------------------------------------
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
////4 类可以特化和半特化,但是特的成员函数像全局函数一样,只能特化,不能半特化,

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template<typename T1, typename T2> struct Widget2
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  
void Fun2()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长  
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长      
//generic implementation
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
  }

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T2> 
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
struct Widget2<char,T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
void Fun2()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    }

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长template
<typename T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
struct widget2
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
void Fun2()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长        
// class partial specialization
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
    }

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
;
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//the class member funtion can not be partial specialization
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
//以下的成员函数半特化,编译失败
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
template<typename T2>
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
void Widget2<char, T2>::Fun2()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长    
//class member function partial specialization
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
}

引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
int main()
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长
{
引用 C++模版全掌握(实例) - 迷茫 - 迷茫中成长}
原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2175164.html