Constexpr
представляется частью типа переменной (полученной через decltype(...)
), так как следующее утверждение не выполняется:
constexpr int variable {};
static_assert(std::is_same_v<int, std::remove_cvref<std::decay<decltype(variable)>>>);
Есть ли в стандартной библиотеке вспомогательная структура, которую я могу использовать на второй аргумент is_same_v
, чтобы сделать утверждение true
? В настоящее время я использую следующий обходной путь, который я хотел бы заменить на правильное решение:
template <typename T> T func();
static_assert(std::is_same_v<int, decltype(func<decltype(variable)>())>);
Код доступен здесь ; Я использую это для ограничения автоматически выводимого типа параметра шаблона нетипичного типа.