以下の内容はhttps://yohhoy.hatenadiary.jp/entry/20140107/p1より取得しました。


参照型の{}初期化

C++11で導入されたUniform Initializationと参照型変数に関するメモ。C++11(N3337)言語仕様の問題としてCWG defect #1288で挙げられ、C++14 Draft N3376にてWording修正が適用された。*1

struct S {};
int main()
{
  S v;
  S & r{ v };  // ??
}

gcc

gcc 4.8.2現在でも下記エラーが発生する。

error: invalid initialization of non-const reference of type
'S&' from an rvalue of type '<brace-enclosed initializer list>'

Clang

Clang 3.0では下記エラーが発生する。Clang 3.1以降では正常にコンパイル可能。

error: reference to type 'S' cannot bind to an initializer list
  S & r{ v }; // ??
      ^~~~~~

MSVC

Visual Studio 2012(MSVC11)以前ではUniform Initializationに未対応。Visual Studio 2013(MSVC12)で正常にコンパイル可能。

関連URL




以上の内容はhttps://yohhoy.hatenadiary.jp/entry/20140107/p1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14