にゃははー

はへらー

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を付けない状態でも同様にエラーが出るからバグなんだろうな・・・