【发布时间】:2015-03-15 08:32:45
【问题描述】:
假设我有一个具有两个模板类参数的函数,例如:
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 需要提供模板参数。
我的问题是有没有办法直接比较两个未参数化的模板类?
std::vector 应该和 std::vector 一样。我怎样才能知道?
【问题讨论】:
-
std::vector不是东西,而std::vector<T>是? -
std::vector 不是必须用类型参数化吗?
-
模板必须专门化才能成为真正的类型。例如,您无法将
std::vector与std::vector进行比较,但您可以将std::vector<int>与std::vector<char>进行比较。 -
std::vector不是类型,也不是容器。它是用于制作类型和容器的模板。然而,这是一个非常有趣的问题,我很想知道它是否可以完成。 -
是的,我想知道我们是否可以比较两个 un-parametrized 模板。