Ich habe eine Art T
, und in einigen Fällen kann es, zum Beispiel char
, aber ich möchte seinen Integralwert, nicht das Zeichen ausgeben. Dazu ist haben die folgenden:Casting zu int oder float je nach is_integer
typedef (std::numeric_limits<T>::is_integer ? int : float) FormatType;
os << static_cast<FormatType>(t);
jedoch, dies zu kompilieren schlägt fehl, die besagt, „error C2275: 'int' : illegal use of this type as an expression
“. Prefixing int
und float
mit typename
dreht sich nicht um das Problem. Was fehlt mir hier?
Die folgenden, die ich glaube, äquivalent ist, funktioniert:
if(std::numeric_limits<T>::is_integer)
{
os << static_cast<int>(t);
}
else
{
os << static_cast<float>(t);
}
Ist das 'C++ 0x'? – Troubadour
@Troubadour: Nein – dukedave
Übrigens wäre es gleichbedeutend mit der Tatsache, dass ersteres nicht gültig ist. :) –