Я не смог найти никакой информации в 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;
}
код не компилируется с ошибкой:
В статической функции-члене «static void 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))
oDefault
как объявление функции, что, я согласен, является законным). - person MSalters   schedule 19.03.2012