我对N4140中[basic.link] / 7的理解是否正确?

时间:2015-10-28 17:29:37

标签: c++ c++14 linkage

VS2015编译并执行以下代码段而不会出现问题。 g ++和clang没有链接代码,我认为它们是正确的。

objReg.Pattern = "Document FormTypeName=""(.+\.\s.+\.)"""

1 个答案:

答案 0 :(得分:4)

您的示例几乎与[basic.link] / 7中的示例相同 - 是的,您的解释是正确的 使用未定义的函数q会使您的程序格式错误 NDR 。因此VC ++在技术上符合。但是,你肯定想报告它。

注意VC ++ produces the same output(" q()")的内容,即使我们添加q的内部定义:

namespace X {
    void p() {
        void q();                    
        q();
    }

    void q() { std::cout << "This would be right"; }
}

void q() { std::cout << "q()" << '\n'; }

......但确实有明智的行为when extern is used