Is the following program well-formed according to the c++ standard?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
I'm getting different results with different compilers:
- gcc compiles it without errors.
- visual c++ gives error C2888: 'X::A': symbol cannot be defined within namespace 'Y'
I don't find any rule in the c++ standard that my program violates.
If the program is well-formed, why does visual studio give an error?
If the program is not well-formed, what rule in the c++ standard did it violate and why doesn't gcc give an error?
I'm not trying to make my program compile. I'm just trying to find out if it is well-formed according to the c++ standard and why the two compilers I tested behave differently.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…