从父命名空间重载类型

7

这似乎可以正确编译:

namespace A {
    template<typename T>
    struct S {};

    namespace B {
        using S = S<int>;
    }
}

int main() {
    using namespace A::B;
    S s;
}

尽管在行号为using S = S<int>的地方,第一个S指的是A::B::S,而第二个S指的是模板A::S

这是标准的C++吗?


添加了“语言律师”标签,因为它似乎与此相关。 - bartop
1个回答

7

3
相关的标准文本是 https://eel.is/c++draft/dcl.dcl#nt:alias-declaration 和 https://eel.is/c++draft/basic.scope.pdecl#3.sentence-3。 - StoryTeller - Unslander Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接