c ++模板检查类型验证

时间:2015-08-06 06:33:25

标签: c++ templates types

例如,

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?

1 个答案:

答案 0 :(得分:2)

这可以使用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

相关问题