1

Temporaries非 const 参照にバインドされていないことがわかりました。

class X
{
  int i;
};

X fun()
{
 return X();
}
void func(X &x)
{

}

int main()
{

 func(fun());
 return 0;
}

fun一時的な生産への呼び出しではありませんか?ここに一時的にリンクできる理由non-const reference。なぜこのコンパイルがうまくいくのか理解できません。

編集:VS2010を使用しています。これがどのように重要なのかわかりません。

4

1 に答える 1

2

fun一時的な生産への呼び出しではありませんか?

はい。

ここで非 const 参照に一時的にリンクできるのはなぜですか。

できません。

なぜこのコンパイルがうまくいくのか理解できません。

コンパイラに欠陥があるためです。

私はVS2010を使用しています。これがどのように重要なのかわかりません。

そのコンパイラには、言語に対する多くの非標準の「拡張機能」があります。これは、そのコンパイラによって受け入れられる危険なコードの一例にすぎませんが、適合するコードではありません。

于 2013-08-23T17:38:52.663 に答える