У меня есть какой-то тип T
, и в некоторых случаях это может быть, например, char
, но я хочу вывести его целое значение, а не символ. Для этого есть следующее:
typedef ( std::numeric_limits< T >::is_integer ? int : float ) FormatType;
os << static_cast< FormatType >( t );
Однако это не скомпилируется, указав "error C2275: 'int' : illegal use of this type as an expression
". Префикс int
и float
с typename
не решает проблему. Что мне здесь не хватает?
Следующее, что я считаю эквивалентным, работает:
if( std::numeric_limits< T >::is_integer )
{
os << static_cast< int >( t );
}
else
{
os << static_cast< float >( t );
}