後に型キャスト後の左辺値または右辺値のためのテスト右辺値または左辺値:が、それはここにコードキャスト
#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型にキャストすると、それはコンパイラのバグか未定義の動作ですか?
思わアップツーを使用してくださいこれらのテストを実行するときに日付コンパイラを使用します。 –
@MarcoA。 VC++ 2015はVC++ 2010と同じ結果を返します – Danh
@MarcoA、申し訳ありませんが、私は持っていません。無料の – JavaMan