Следующий фрагмент не компилируется с Visual Studio 2010, но GCC нравится:
namespace Test {
class Baz;
// Adding class Bar; here and removing the class below makes it work
// with VC++, but it should work like this, shouldn't it?
void Foo (Baz& b, class Bar& c);
}
namespace Test {
class Bar
{
// Making this method non-template works
template <typename T>
static void Lalala ()
{
}
};
}
int main ()
{
}
Я что-то делаю глупо или это допустимая ошибка компилятора? Я получаю ошибку:
error C2888: 'void Bar::Foo(void)' : symbol cannot be defined within namespace 'Test'
Компилируется с GCC 4.5.1: http://ideone.com/7sImY
[Редактировать] Просто чтобы прояснить, я хочу знать, является ли это допустимым C ++ или нет (и если да, то почему нет) - обходные пути для его компиляции хороши, но не являются частью этого вопроса.