- 1
- 2
- 3
- 4
template<typename T>
constexpr size_t printed_sizeof() {
return log10(sizeof(T)) + 1;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
template<typename T>
constexpr size_t printed_sizeof() {
return log10(sizeof(T)) + 1;
}
Осваиваем новые стандарты.
может, хотелось "сколько символов максимум займет вот этот вот тип?"
Но хз зачем это может понадобиться. Размеры типов не так уж часто выводят.
зы. до меня дошло что ты написал - действительно в ОП получается размер этого типа, тем более неясно
табличный вывод с отступами?
char buf[ 6 ];
snprintf( buf, sizeof( buf ), "%u", num );
buffer << buf;
return buffer;
}
friend buffer & operator << ( Buffer &buffer, uint64_t num ) throw (BufferException)
{
char buf[ 21 ];
snprintf( buf, sizeof( buf ), "%"PRIu64, num );
buffer << buf;
return buffer;
}[/code]
что в общем-то достойно отдельного г-поста. Ну я и предложил ребятам обобщённый вариант.
P.P.S. Для знаковых надо что-то типа log10(2)*(CHAR_BIT*sizeof(T)-1) + 1. Минус 1 бит, плюс одно знакоместо. P.S. Хотя мой код для знаковых и флоатов выдаст неправильный ответ ;(
А за numeric_limits спасибо.
Жиденький понос, разве не для этого был создан этот сайт?