Есть ли простой, чистый способ определения во время компиляции значений max и min для переменной некоторой (иначе неизвестной в данный момент) целочисленной переменной или типом? Использование шаблонов?Значения Min и Max для целочисленной переменной во время компиляции в C++
Например:
// Somewhere in a large project is:
typedef unsigned long XType;
typedef char YType;
// ...
// Somewhere else
XType a;
YType b;
LONGLONG c,d,e,f;
c = MinOfType(a); // Same as c = 0;
d = MaxOfType(a); // Same as d = 0xffffffff;
e = MinOfType(b); // Same as e = -128;
f = MaxOfType(b); // Same as f = 127;
// Also would be nice
e = MinOfType(YType); // Same as e = -128; // Using the typename directly
// Or perhaps
e = MinOfType<YType>(); // Same as e = -128; // Using the typename directly
Значение переменной не может быть известно во время компиляции, но константы могут. –
«Значение» переменной не требуется в приведенном выше коде. Но это не тип переменной, как в моем примере, известный во время компиляции. Эти переменные не являются полиморфными классами, а всего лишь одним из основных целых типов. Или я что-то упускаю (очень возможно). Я думаю, что у меня есть numeric_limits, работающий для случая, когда имя используется напрямую. Теперь я могу сделать что-то вроде: e = numeric_limits :: max(); ? –
Harvey
Несомненно, тип «a» или «b» известен компилятору во время компиляции. В противном случае компилятор не сможет генерировать код, используя эти переменные вообще. – Harvey