다음 코드는 비주얼 스튜디오 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입니다 ++ 여부 (만약 그렇다면, 왜 알고 싶은 명확하게하기 안 함) - 컴파일 할 수있는 해결 방법은 좋지만이 질문의 일부는 아닙니다.
OP 질문에 GCC가 그것을 컴파일했지만, MSVC는 대답하지 않았습니다. –
'class bar'를 타입으로 사용하는 것이 가끔 허용됩니다. "때로는"복잡하기 때문에 그것을 피하는 것이 좋습니다. – aschepler
GCC로 컴파일됩니다. _ 지금은 (GCC 4.5.1 및 GCC4.6.1)이므로 도움이되지 않습니다. – Anteru