在這裏的代碼類型轉換後,測試左值或右值:它是一個右值或左值後獲得的鑄造
#include <stdio.h>
template <typename T>
T const f1(T const &t) {
printf("T const \n");
return t;
}
template <typename T>
T f1(T &t) {
printf("T\n");
return t;
}
struct KK {
int a;
};
int main()
{
KK kk;
kk.a=0;
int ii;
f1(kk);
f1((KK)kk);
f1(ii);
f1((int)ii);
return 0;
}
在GCC link結果是這樣的指示右值導致類型轉換後:
T
T const
T
T const
但在VC++ 2010,這是指示右值僅當它是一個類的類型的結果:
T
T const
T
T
這是一個編譯器錯誤或只是一些未定義的行爲時,類型強制轉換爲int?
請使用上TO-日期編譯器當你運行這些測試 –
@MarcoA。 VC++ 2015給出了與VC++ 2010相同的結果 – Danh
@MarcoA,對不起,我沒有。這不是免費的 – JavaMan