1. 程式人生 > >【C++模板】C++宣告模板時能否用struct關鍵字代替class或者typename

【C++模板】C++宣告模板時能否用struct關鍵字代替class或者typename

        我們知道C++中宣告一個函式或者類的模板支援兩種關鍵字class和typename:

template <class T>
struct Person
{
public:
    T age;
};

或者

template <typename T>
struct Teacher
{
public:
    T age;
};

         而且我們知道在C++中struct和class關鍵字基本上是等價的,因為要相容C語言,所以C++保留了struct關鍵字並且它等價於class關鍵字,那麼在模板裡面是不是可以用struct替代class呢?

        如下面的程式碼:

template <struct T>
struct Person
{
public:
    T age;
};

        答案是否定的,會出現下面的編譯錯誤:


          想必這也在預料中,C++保留struct關鍵字主要是為了相容C語言,但是在C語言中是不存在模板的,所以沒有必要再模板中支援strcut宣告模板形參。