检查两个模板模板参数是否相同

时间:2018-09-13 21:24:05

标签: c++

是否有一种标准的(std)方法可以检查两个模板(而不是两个模板实例化)是否相等?

当我有两个要检查是否相等的模板模板参数时,理想情况下,我想编写

template <template <class> class T1, template <class> class T2>
class Foo{
  static_assert(std::is_same<T1, T2>::value, "T1 and T2 must be same");
};

但是不能,因为std::is_same接受类型模板参数而不是模板模板参数。

我当前的“解决方案”是我使用随机类型(例如void)实例化,然后检查是否相等:

template <template <class> class T1, template <class> class T2>
class Foo{
  static_assert(std::is_same<T1<void>, T2<void>>::value, "T1 and T2 must be same");
};

这一切都很好,直到T1T2都无法用我选择的随机类型(此处为void)实例化。

我想我可以写自己的类型特征is_same_template,但是我有点想解决这个问题。

0 个答案:

没有答案