J'ai donc besoin log10
pour trouver le nombre de caractères nécessaires pour stocker un nombre entier donné. Mais j'aimerais qu'elle détermine à la compilation la longueur des tableaux de caractères de manière statique sur la base de ces constantes d'entiers définies dans mon code. Malheureusement log10
n'est pas un constexpr
même la version entière. Je pourrais faire une version intégrale comme celle-ci :
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;
}
Ce qui me permettra enfin de le faire : const char foo[intlen(13) + 1U]
Fait c++ m'a déjà donné un outil pour cela ou dois-je définir mon propre outil ?