作为容器中的类型或变量的数值常量
numerical constants as types or variables in a container?
我想知道是否有数值常数作为constexpr
变量或::std::integral_constant<>
?例子:
template <typename T>
struct container
{
static constexpr ::std::size_t const size = 16;
};
template <typename T>
struct container
{
using size = ::std::integral_constant<::std::size_t, 16>;
};
我更倾向于::std::integral_constant
方法,因为静态constexpr变量可能需要在某处的.cpp文件中定义。
我个人认为,最好的选择是老式enum。constexpr
容易使用odr,而integral_constant
类型太多(如果稍后在代码的某个地方需要,您总是可以创建一个)。
相关文章:
- 用C++中的一个变量定义一个常量
- 通过多个头文件使用常量变量
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 非常量变量只读位置的赋值
- 多个"常量引用"变量可以共享同一个内存吗?
- 使用大量已知常量变量的正确方法
- 常量成员函数中成员变量的类型
- 无法在具有常量变量大小的类中创建堆栈分配数组
- 错误:constexpr 变量'struct2Var'必须由常量表达式初始化
- 这些语句是否等效(静态变量、常量变量和泛型)
- 如何将变量内容常量转换为 std::array 的大小?
- 我应该使我的局部变量常量还是可移动的
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 对全局变量的非常量引用的初始化无效
- 如何在 C++ 中的 wcstok 中使用常量 WCHAR* 变量?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 全局变量/常量的替代方案
- 为什么首选 if( 常量 == 变量 ) 而不是 if ( 变量 == 常量 )
- 在c++中声明一个变量常量有什么意义