これに関するGoogleの情報は見つかりませんでした。次の例では、次のようになります。
#include <iostream>
class Default
{
public:
void Print()
{
std::cout << "This is a message\n";
}
};
template <class C = Default>
class Template
{
public:
static void Test()
{
Default oDefault();
}
};
int main()
{
return 0;
}
コードは次のエラーでコンパイルに失敗します:
静的メンバー関数'staticvoid Template :: Test()':19:22:エラー:デフォルトのテンプレート引数は、-std = c++0xまたは-std=gnu++0xがないと関数テンプレートで使用できません。
問題は、その行に角かっこが表示されるのが気に入らないことです。その理由がわかりません。角かっこを削除すると、コードは正常にコンパイルされます。また、テンプレート宣言(13行目)を削除すると、正常にコンパイルされます。これはバグですか、それともまさにこの状況についてどこかにルールがありますか?
私はg++4.6.1(gccバージョン4.6.1(Ubuntu / Linaro 4.6.1-9ubuntu3))を使用しています