我试图从ValueType
我定义的类(typedef)中获取 typedef 指向的类型。但是,当这失败时,我希望它返回给定的类型(例如,如果我给它 a double
,我希望它返回 a double
)。这是我到目前为止所拥有的:
struct myClass { typedef double ValueType; };
template < typename V, typename U = typename V::ValueType>
struct base_type { typedef U type; };
template < typename V >
struct base_type< V, V > { typedef V type; };
static_assert( std::is_same < typename base_type< myClass >::type , double >::value,
"base_type doesn't work" ); //This works.
static_assert( std::is_same < typename base_type< double >::type , double >::value,
"base_type doesn't work" ); //This returns "error: 'double' is not a class, struct, or union type"
但是,这不起作用,第二个 static_assert 失败。显然,第二个定义从未被调用,但我不确定为什么(它肯定会比第一个匹配得更好)。
有任何想法吗?