考虑以下程序:
#include <iostream>
namespace N {
int j = 1;
}
namespace M {
typedef int N;
void f() {
std::cout << N::j << std::endl;
}
}
int main() { M::f(); }
用 clang 编译它会产生以下编译器错误:
prog.cc:10:22: error: 'N' (aka 'int') is not a class, namespace, or
enumeration
std::cout << N::j << std::endl;
^ 1 error generated.
GCC 没有给出任何编译器错误。我试图弄清楚我应该为哪个编译器提交错误报告。哪个编译器具有正确的行为以及原因(对 c++ 标准的引用)?
魔杖盒-Clang:http ://melpon.org/wandbox/permlink/s0hKOxCFPgq5aSmJ
魔杖盒 - GCC:http ://melpon.org/wandbox/permlink/i2kOl3qTBVUcJVbZ