Часто у меня есть некоторое постоянное число времени компиляции, которое также является верхним пределом возможных значений, принимаемых переменными.И поэтому я заинтересован в выборе наименьшего типа, который может вместить эти значения.Например, я могу знать, что переменные будут вписываться в диапазон <-30 000, 30 000>, поэтому при поиске подходящего типа я бы начал со знака short int.Но так как я переключаюсь между платформами и компиляторами, мне бы хотелось, чтобы во время компиляции проверялась, действительно ли верхние значения констант действительно соответствуют этому типу.BOOST_STATIC_ASSERT (sizeof (T)> = required_number_of_bytes_for_number) работает нормально, но проблема в следующем: как автоматически определить количество байтов, необходимое для хранения заданной постоянной времени компиляции, со знаком или без знака?Я думаю, макрос C мог бы сделать эту работу?Кто-нибудь может написать это для меня?Я мог бы использовать std :: numeric_limits :: max () и min () вместо вычисления байтов, но тогда мне пришлось бы переключиться на assert во время выполнения: (