c++模板特例化 函式模板(非法使用顯式模板引數 )
阿新 • • 發佈:2020-09-15
這裡是其中一個場景, 想了解其他的請繞行。
class 模板特例化:
template<typename T, int v1> class A { public: A(T value) { a = value * v1; } T a = 0; }; template<typename T> class A<T, 10> { public: A(T value) { a = value * 10; } T a = 0; }; template<int v1> class A<int, v1> { public: A(int value) { a = value * v1; } int a = 0; };
function 模板特例化:
報錯非法使用顯式模板引數 情景如下:
template <typename T, int v1, int v2> int haha(T a) { return a * v1 * v2; } template <int v1, int v2> int haha<int, v1, v2>(int a) { return a * v1 * v2; }
理解是函式是多引數的情景, 當某個型別特例化, 那就是那個引數型別定了, 無需套用之前的模板:
template <typename T, int v1, int v2> int haha(T a) { return a * v1 * v2; } template <int v1, int v2> int haha(int a) { return a * v1 * v2; }