我有一些類型T
,在某些情況下,它可能是,例如char
,但我想輸出其整數值,而不是字符。因爲這是有以下幾點:鑄造int或浮動取決於is_integer
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);
}
這是`C++ 0x`? – Troubadour 2011-01-14 11:09:10
@Troubadour:沒有 – dukedave 2011-01-14 11:10:56
BTW,這將是等效的除了一個事實,即前者是無效的。 :) – 2011-01-14 11:14:56