L
Li Daobing
Hello, I want to know whether the following program is legal. the
g++-4.1 can not compile it
$ g++ -c bug2.cpp
bug2.cpp:8: error: expected unqualified-id before '}' token
bug2.cpp:15: error: 'A' is already declared in this scope
bug2.cpp:20: error: prototype for 'void n1::B::foo(const
n1::n2::A&)' does not match any in class 'n1::B'
bug2.cpp:6: error: candidate is: void n1::B::foo(const n1::A&)
$
// begin bug2.cpp
// #include "b.hpp"
namespace n1 {
class A;
class B {
void foo(const A&);
}
}
// #include "a.hpp"
namespace n1 {
namespace n2 {
class A {};
}
using n2::A;
}
// b.cpp
namespace n1 {
void B::foo(const A&) {
return;
}
}
// end
g++-4.1 can not compile it
$ g++ -c bug2.cpp
bug2.cpp:8: error: expected unqualified-id before '}' token
bug2.cpp:15: error: 'A' is already declared in this scope
bug2.cpp:20: error: prototype for 'void n1::B::foo(const
n1::n2::A&)' does not match any in class 'n1::B'
bug2.cpp:6: error: candidate is: void n1::B::foo(const n1::A&)
$
// begin bug2.cpp
// #include "b.hpp"
namespace n1 {
class A;
class B {
void foo(const A&);
}
}
// #include "a.hpp"
namespace n1 {
namespace n2 {
class A {};
}
using n2::A;
}
// b.cpp
namespace n1 {
void B::foo(const A&) {
return;
}
}
// end