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> { ... };