コードは次のようになります。
struct Foo {
Foo(const char *);
};
Foo::Foo(const char *str = 0)
{
}
VS 2013 および gcc 4.8.0 はそのようなコードを受け入れますが、clang 3.3 はそのようなコードを次のように拒否します。
エラー: 再宣言にデフォルト引数を追加すると、このコンストラクターがデフォルト コンストラクターになります
標準 (C++03 および C++11) の観点から正しいのは誰ですか?
ノート:
私はclangの選択も気に入っていますが、gccとビジュアルスタジオにバグを報告する予定です。これが標準的な観点から正しくない場合、これはコンパイラの開発者にこの問題を修正するよう説得するのに役立ちます.
GCC
ここで問題を説明しました: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58194
しかし運が悪かったので、ドラフトが標準になるまでバグ修正を中断しました。