Так что мне нужна функция log10
, чтобы найти количество символов, необходимое для хранения заданного целого числа.Но я хотел бы получить его во время компиляции, чтобы определить длину массивов символов статически на основе этих целочисленных констант, определенных в моем коде.К сожалению, log10
- это не constexpr
функция, даже целочисленная версия.Я мог бы сделать интегральную версию, подобную этой:
template <typename T>
constexpr enable_if_t<is_integral_v<T>, size_t> intlen(T param) {
size_t result{ 1U };
while(T{} != (param /= T{ 10 })) ++result;
return result;
}
, что в конечном итоге позволит мне сделать: const char foo[intlen(13) + 1U]
Имеет ли c ++ уже инструмент для этого или ядолжен определить мой собственный?