単一の引数を取り、その引数の型::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
私は何を間違えましたか?