c++模板检查类型验证

c++ template check type validation

本文关键字:类型 验证 检查 c++      更新时间:2023-10-16

例如

enum tr {z, u};
template<tr T>
class test 
{
      assert(T is z or u);//how can I add assertions in this field?
};

在注释中,我如何添加代码来断言模板T只应该是z或u?

这可以用static_assert作为@π α ντα- ρ ε ε已经指出:

enum tr {z, u, bar};
template<tr T>
class test 
{
      static_assert(T==z||T==u, "T must be z or u");
};
int main() 
{
    test<z> t_valid; 
    test<bar> t_fails; // compilation fails
    return 0;
}

live on ideone