c++ - C++ 中具有不同数据成员的模板结构

有没有办法根据参数更改模板化结构中包含的数据成员?例如:

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/

相关文章:

c# - Powershell 到 C# 语法转换

r - 如何按日期对数据框进行排序。但日期列在宿舍

ios - 'CC_MD5' is deprecated : first deprecated in

css - 在 MUI v5 中更改抽屉的颜色

c - 释放函数内部的指针,并在 main 中使用它

next.js - Next JS 中的 Font Awesome 6(测试版)和动态图标名称

c - C如何计算混合的int和float数据类型

python - youtube_dl - 无法阻止发布错误日志

django - 使用 drf-spectacular 为 django API 定义组件模式

java - 为什么 UriComponentsBuilder 忽略空查询参数?