【发布时间】:2021-01-08 16:04:54
【问题描述】:
给定这个伪存根类:
template<class T>
MyClass
{
std::map<T,std::string> mContents;
};
有没有办法只允许T 成为枚举类型?我试图了解这个问题和链接页面中讨论的内容,我是否可以使用std::enable_if和std::is_enum,但我无法轻易理解它是否适合我的情况(Template specialization for enum)
【问题讨论】:
-
static_assert(std::is_enum<T>::value, "not an enum");意义上的“力”? -
@JHBonarius 应该将关于模板函数和模板类的大致相同问题视为重复项吗?如果是,那么这是一个骗局 - 谢谢
-
虽然通过使用 C++20 约束或
enable_if等来“对 SFINAE 友好”,但对于函数模板来说比对类模板更重要。它仍然可以对类模板产生影响,但其他模板代码检测/依赖于类模板特化是否有效的情况要少得多。