2
template <typename T>
struct A
{
template <typename T1>
struct B {};
};
template <typename T>
using b = A<T>::B;
上面的代碼拒絕編譯。是否有可能在C++中使用類別模板?
鐺給出了這樣的錯誤: 使用類模板的 'A < T> ::型' 要求
template <typename T>
struct A
{
template <typename T1>
struct B {};
};
template <typename T>
using b = A<T>::B;
上面的代碼拒絕編譯。是否有可能在C++中使用類別模板?
鐺給出了這樣的錯誤: 使用類模板的 'A < T> ::型' 要求
因爲B是模板應它提供了一個模板參數
template <typename T>
struct A
{
template <typename T1>
struct B {};
};
template <typename T,typename T1>
using b = typename A<T>::template B<T1>;
缺少類型名稱的模板參數,A :: B是一種依賴類型。 –
Borgleader
'struct A'可以有一個模板專門化,其中'A :: B'(例如)可以是一個靜態變量而不是一個類型。因此,對於編譯器,您必須指定您希望'A :: B'通過在其之前寫入'typename'而成爲一種類型。 –
KABoissonneault