????????????????????????(??????)???????壬?????????????????г??????????????д???????????????????????????????????????????????????1??2????????????ɡ???????????£?????????д???????????г?????????????????????????????????????????
??????????????????A???????????????char*????????????????func()????????????????????????????
1 template <typename _Ty>
2 struct A
3 {
4     // ???????????a
5     // ???????????b
6     // ......
7     void func()
8     {
9         std::cout << "common type." << std::endl;
10     }
11 };
12
13 int main()
14 {
15     A<int> i;
16     i.func();
17
18     A<char*> c;
19     c.func();
20
21     return 0;
22 }
???????????????????????????????????
1 template <typename _Ty>
2 struct A
3 {
4     // ???????????a
5     // ???????????b
6     // ......
7     void func()
8     {
9         if (typeid(_Ty) == typeid(char*))
10             std::cout << "common type." << std::endl;
11         else
12             std::cout << "special type." << std::endl;
13     }
14 };
????????????????????????????????????????????????
1template<typename_Ty>
2structA
3{
4//???????????a
5//???????????b
6//......
7template<typename__Ty>
8voidfuncImpl()
9{
10std::cout<<"commontype."<<std::endl;
11}
12
13template<>
14voidfuncImpl<char*>()
15{
16std::cout<<"specialtype."<<std::endl;
17}
18
19voidfunc()
20{
21funcImpl<_Ty>();
22}
23};