私からのMinGWを構築したトランクバージョンGCC-4.7.0:非静的データメンバ初期化子が実装されていると言われて、このバージョンの変更点の説明ではhttp://code.google.com/p/mingw-builds/downloads/list非静的データメンバの初期化子の質問
:http://gcc.gnu.org/gcc-4.7/changes.html
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
私はそのような例をコンパイルしよう:
#include <iostream>
#include <string>
struct type {
type()
:i(33)
{}
int i;
std::string s("string");
};
int main() {
type t;
std::cout << t.i << " : " << t.s << std::endl;
}
私は、エラーのトンを取得し、これは終わりである:
main.cppに:16:35:注:「STD ::文字列(タイプ:: )(INT){別名 STD :: = basic_string(type ::)(int)}は 'const'から派生していません。 std :: basic_string < _CharT、_Traits、_Alloc> 'main.cpp:16:35:note: オーバーロードされたアドレスを解決できませんでした関数 't.type :: s'
しかし、ドキュメントに従って、コードは正しいです。
私はそれをテストするためにGCC 4.7をインストールしておらず、私のバージョンはありません。サポートメンバの初期化を行いますが、-std = C++ 0xフラグを指定してコンパイルしますか? – Griwes
メンバ初期化子はGCC 4.7で新しくなっているので、単純なコンパイラのバグでなければなりません。 –
to Griwes:はい。 – niXman