#include <iostream> // 偏特化的模板不会自己添加构造函数 ctor 和 析构函数 dtor #if 1 // P1 template <typename T1, typename T2> class Stack { public: Stack() { std::cout << "T, T" << std::endl; }; ~Stack() {}; private: }; #endif // 0 //////////////////////////////////////////////////////////////////// #if 1 // P2 template <typename T1> class Stack<int, T1> { public: Stack() { std::cout << "int, T1" << std::endl; }; ~Stack() {}; private: }; #endif // 0 //////////////////////////////////////////////////////////////////// #if 1 // P3 template <typename T1> class Stack<T1, int> { public: Stack() { std::cout << "T1, int" << std::endl; }; ~Stack() {}; private: }; #endif // 0 //////////////////////////////////////////////////////////////////// #if 0 // P4 template <> class Stack<int, int> { public: Stack() { std::cout << "int, int" << std::endl; }; ~Stack() {}; private: }; //template<> //inline void Stack<int, int>::p() //{ // std::cout << "T, int" << std::endl; //} #endif // 0 int main() { // 调用优先级 Stack<double, double> s1; // P1 Stack<float, int> s2; // P3 > P1 Stack<int, int> s3; // P4 > (P3 或者 P2,不能共存) > P1 Stack<int, double> s4; // P2 > P1 }