数值常量作为容器中的类型或变量?
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 文件中的某处定义。
我个人认为,最好的选择是老式的枚举。 constexpr
容易使用 ODR,而 integral_constant
键入太多(如果您在代码后面的某个地方需要它,您总是可以创建一个)。
我想知道是将数值常量作为 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 文件中的某处定义。
我个人认为,最好的选择是老式的枚举。 constexpr
容易使用 ODR,而 integral_constant
键入太多(如果您在代码后面的某个地方需要它,您总是可以创建一个)。