有没有办法根据参数更改模板化结构中包含的数据成员?例如:
template<int Asize> struct intxA
{
#if (Asize <= 8)
int8 num = 0;
#elif (Asize <= 16)
int16 x = 1;
#endif
};
实现中:
intxA<3> struct8;
intxA<11> struct16;
我试过上面的代码,但是,无论 Asize 的值如何,数据成员“num”始终存在。有没有办法在 C++ 中执行此操作而无需手动执行?
最佳答案
使用std::conditional
:
template<int Asize> struct intxA
{
std::conditional_t<(Asize <= 8), int8, int16> m = Asize <= 8 ? 0 : 1;
};
但是如果你想给不同的名字,你必须做特化
https://stackoverflow.com/questions/69469112/