如何判断两个模板 类 是否为同一类型

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 {};