小编ton*_*ony的帖子

has_type模板为struct type {}返回true;

有许多方法可以实现一个has_type<T>模板,推断出是否T有一个嵌套类或者命名为typedef type.即

namespace detail {
    template<typename> struct tovoid { typedef void type; };
}

template<typename T, typename = void> struct has_type
    : std::false_type { };
// this one will only be selected if C::type is valid
template<typename C> struct has_type<C, typename detail::tovoid<typename C::type>::type>
    : std::true_type { };
Run Code Online (Sandbox Code Playgroud)

要么

template <typename C> char test_for_type(...) { return '0'; }
template <typename C> double test_for_type(typename C::type const *) { return 0.0; }

template <typename T> struct has_type
{ …
Run Code Online (Sandbox Code Playgroud)

c++ templates type-traits template-meta-programming

5
推荐指数
1
解决办法
269
查看次数