我希望有一个构造函数,它只接受一个参数,并且仅在该参数的类型具有成员类型
::t
且必须是另一种类型的子类型时才启用。我使用类型特征来实现这一点,代码如下:
代码如下:
#include <type_traits>
struct Y{};
struct X{
//Only allow if T has a type member T::t which is a subtype of Y
template <typename T>
X(T* t, std::enable_if<std::is_base_of<Y, typename T::t>::value, int>::type e = 0){}
};
然而,g++抱怨以下内容:
test/test.cpp:8:75: error: ‘std::enable_if<std::is_base_of<Y, typename T::t>::value, int>::type’ is not a type
我做错了什么?
T::t
)也会导致问题。 - Paul Michalik