GCC4.6のバグ
いつからか解らないがGCC4.6で以下のコードが通らなくなっている。多分最近のupだろう。
gcc --versionは以下の通り
gcc (GCC) 4.6.0 20100826 (experimental) Copyright © 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#include <string> struct hoge { hoge( const std::string & = "" ) {} }; struct fuga { hoge h; }; int main( void ) { fuga f; }
fugaのデフォルトコンストラクタを呼びにいくと、hogeにデフォルトコンストラクタがないからかデフォルト引数から引っ張ってくることができないらしい。
cppunitのコンパイル中に発見したorz
例によってバグレポは他人任せ。ちなみにknown issuesとかは見てないです。(だれか報告済みかもしれない)
追記(20101104): stringに依存しないcoreなコードはこうなった。というか仕様読んでないなぁ。どうなんだろ実際。
struct S { S( int ) {} }; struct hoge { hoge( const S & = 0 ) {} }; struct fuga { hoge h; }; fuga f;
- std=gnu++0xを付けない状態でも同様にエラーが出るからバグなんだろうな・・・