2016-11-24 13 views
5

VS2015 Update 3は、エラーおよび警告なしでこれをコンパイルします。しかし、一時的なものはconst参照にしか束縛できないという印象を受けました。これは不適合ですか、何かを誤解していますか?その質問は、VS2015については特にないが、私はこの1つを入力したときに位置していないもののmarcinjによってリンク非const参照への割り当て

struct Foo {}; 
Foo Func6() { return Foo(); } 

TEST(Arguments, NonConstReference) 
{ 
    Foo& bob = Func6(); 
} 

EDIT

質問は、同じ問題です。

/W4を使用してテストしましたが、警告が表示され、表示されていないかどうかを確認しましたが、もう一度テストしてみるとわかりました。プロジェクトのプロパティを開いて設定を調整するVS2015には、現在選択されているビルド構成とは異なるビルド構成に設定されたプロパティダイアログが表示されるという習慣があります。これは、何度も私を惹きつけている最も役に立たない動作です(そして、そうするために)。

Disable Language Extensions(/ Za)を使用している他の質問ではこれがエラーになりますが、残念ながらマイクロソフト独自のプラットフォームヘッダーはコンパイルされないため、残念なことに使用可能な解決策ではありません。

答えて

7

MSVCコンパイラには標準でない拡張機能があり、一時的に非constの参照にバインドすることができます。これを無効にするには、command-line option /Zaまたは対応するプロジェクトプロパティを使用します。

+0

これを使用することは決して理解できません。 –

+0

@GillBatesは、右辺値のリファレンスを持っているとさらに役に立たない! –

+1

@GuillaumeRacicot当然ながら、この拡張は、少なくとも1つの10進数の基準値に先行しているので、それは公平な比較だとは思いません。 – Angew

関連する問題