我希望能够完成这样的事情:
template<int size>
struct myStruct
{
(size > 5 ? int64_t : int32_t) value;
};
一种方法是对每个可能的值集进行显式专门化,但这显然并不理想。有人知道更好的方法吗?
最佳答案
使用std::conditional
。这需要 C++11,但您可以轻松编写自己的:
template<int size>
struct myStruct
{
typename std::conditional<(size > 5), int64_t, int32_t>::type
value;
};
或者在 C++14 中:
template<int size>
struct myStruct
{
std::conditional_t<(size > 5), int64_t, int32_t> value;
};
关于c++ - 根据数字参数更改模板成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140302/