考虑下面的程序。是否按照c++标准格式正确(引用所需标准的相关部分):

namespace X { extern int i; }

namespace N { using X::i; }

int N::i = 1;

int main() {}

对于不同的编译器,我得到不同的结果。我试图找出应该为哪个编译器提交错误报告:
  • lang语:产生以下编译器错误: namespace 'N'中没有名为'i'的成员
  • GCC和Visual C++编译时没有错误。

  • 为了进行比较,以下给出了所有三个编译器的编译器错误:
    namespace X { void f(); }
    
    namespace N { using X::f; }
    
    void N::f() {};
    
    int main() {}
    

    最佳答案

    当前工作草案N4527,[8.3p1]:



    因此,肯定是格式错误的; GCC和MSVC错误。

    关于c++ - 尝试通过using-declaration定义 namespace 成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31496347/

    10-15 16:24