我有一个类模板:
template<int a, int b>
class foo {
};
我只想实例化它a + b == 10
。
我可以使用std::enable_if
?
此外,如果我有一个数据成员class foo
:
template<int a, int b>
class foo {
int c;
};
我只想拥有c
when a == 5
.
我该如何使用std::enable_if
?
这是正确的使用案例吗std::enable_if
?
template<int a, int b, typename T = typename std::enable_if<a + b == 10>::type>
class foo {
};
这应该可以完成工作;只需确保在实例化模板时从未显式提供第三个模板参数即可。
正如其他人提到的,static_assert
是一个更好的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)