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

vkc1a9a2  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(147)

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

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是同一个东西,我怎么才能知道呢?

qltillow

qltillow1#

当然,写你自己的特点就行了。

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

vuktfyat2#

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

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

相关问题