如何判断两个模板 类 是否为同一类型
How To Tell If Two Template Classes Are The Same Type
假设我有一个具有两个模板 class 参数的函数,例如:
template <template <typename...> C1, template <typename...> C2>
constexpr bool is_same_container() {
return std::is_same<C1, C2>::value;
}
is_same_container<std::vector, std::vector>();
当我编译时,编译器抱怨说 C1 和 C2 需要提供模板参数。
我的问题是有什么方法可以直接比较两个未参数化的模板class吗?
std::vector 应该与 std::vector 相同。我怎样才能知道?
当然,写你自己的特质。
template<template<class...> class C1, template<class...> class C2>
struct is_same_template : std::false_type {};
template<template<class...> class C>
struct is_same_template<C,C> : std::true_type {};
假设我有一个具有两个模板 class 参数的函数,例如:
template <template <typename...> C1, template <typename...> C2>
constexpr bool is_same_container() {
return std::is_same<C1, C2>::value;
}
is_same_container<std::vector, std::vector>();
当我编译时,编译器抱怨说 C1 和 C2 需要提供模板参数。
我的问题是有什么方法可以直接比较两个未参数化的模板class吗?
std::vector 应该与 std::vector 相同。我怎样才能知道?
当然,写你自己的特质。
template<template<class...> class C1, template<class...> class C2>
struct is_same_template : std::false_type {};
template<template<class...> class C>
struct is_same_template<C,C> : std::true_type {};