1
我想使用enable_if
來爲某些類型定義一個類。在這些類型中,我需要使用一些模板類型,並且我無法使其工作。這裏是一個MWE:使用具有兩級模板的enable_if
模板類A
:
template<typename T, typename Enable = void> class A;
其專門爲一些簡單的類型,如整型這裏,可以定義如下:
template<typename T>
class A<T, std::enable_if<std::is_integral<T>::value>::type>
{ ... };
現在我定義一堆模板類型:
template<typename U> class X {...};
template<typename U> class Y {...};
我應該如何繼續專門爲我的課A
X
和Y
類型?
兩次嘗試不工作:
具有以下,宣告例如
A<X<int> >
類型的對象產生錯誤incomplete type
:template<typename U> template<typename T> class A<T, std::enable<std::is_same<T, X<U> >::value || std::is_same<T, Y<U> >::value>::type> { ... };
具有以下,誤差是
'T' is not a template
。template<typename U> template<typename T> class A<T<U>, std::enable<std::is_same<T, X>::value || std::is_same<T, Y>::value>::type> { ... };