是否有一种标准的(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");
};
这一切都很好,直到T1
或T2
都无法用我选择的随机类型(此处为void
)实例化。
我想我可以写自己的类型特征is_same_template
,但是我有点想解决这个问题。