我需要一个用于给定完整类类型的元函数,以返回其模板(例如f<foo<bar>>::type
或f<foo<baz>>::type
结果为foo
)。
或者,它可能会返回true
在f<foo<bar>, foo<baz>>::value
和false
上f<foo<bar>, not_foo<baz>>::value
PS:这意味着可以与许多chrono :: duration一样的类使用(但适用于重量单位,质量单位等)。我需要不同的单位,而不是彼此转换。
f<foo<bar>>::type or f<foo<baz>>::type results in foo
不完全是(请参阅“别名模板认为等同于相同模板”),您可以执行以下操作:
template <typename T> struct template_class;
template <template <typename> class C, typename T>
struct template_class<C<T>>
{
template <typename U>
using type = C<U>;
};
否则可能会在true
f<foo<bar>, foo<baz>>::value
和false上返回truef<foo<bar>, not_foo<baz>>::value
即使是有限的,专业化也比较容易,尽管主要是is_same
:
template <typename, typename> struct has_same_template_class : std::false_type{};
template <template<typename> class C, typename T1, typename T2>
struct has_same_template_class<C<T1>, C<T2>> : std::true_type{};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句