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

How To Tell If Two Template Classes Are The Same Type

本文关键字:是否 类型 两个 何判断 判断      更新时间:2023-10-16

假设我有一个函数,它有两个模板类参数,例如:

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 相同。我怎样才能知道?

当然,只要写下你自己的特质。

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

适用于 n 个变量,使用可变参数函数我们可以比较我们想要的所有模板

#include <type_traits>
template <typename T, typename ...Args>
bool are_same(){
      bool value = std::disjunction<std::is_same<T, Args>...>::value;
return value;
相关文章: