Мне интересно, должны ли иметь числовые константы как переменные 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 где-то.
Примечание: пространство имен 'std' зарезервировано, вам не нужно ':: std' –
Меньше, чем лучше. Не используйте 'std :: integral_constant'. –
Элемент 'value'' std :: integ_constant' (который вам нужно использовать для доступа к значению) является 'static constexpr'. Поэтому, на мой взгляд, для того, что вы хотите сделать, 'std :: integral_constant' просто долгий путь для создания' constexpr'. –