将嵌套名称带入非成员函数的作用域

Bring nested name into scope in non-member function

我有一个结构 B,其中包含类型 anchor_point 作为嵌套名称的声明。如何使用 using 指令将 anchor_point 带入另一个函数的范围?我基本上想按原样访问类型而不对其进行限定(就像从成员函数中一样)。我尝试了以下(见评论):

CODE

#include <memory>
#include <iostream>

struct B
{
    struct anchor_point
    {
        int a_;
    };
    int x;
    int y;
};

int main()
{
    // Here's what I want - doesn't compile
    // using B;
    // anchor_point ap1{5};

    // This gets laborious if there are dozens of types inside of B
    B::anchor_point ap2{5};

    // This is even more laborious
    using ap_t = B::anchor_point;
    ap_t ap3{5};

    std::cout << ap2.a_ << ", " << ap3.a_ << "\n";
}

这个例子很简单,但是假设我在结构中声明了几十个这样的类型,我并不总是想输入 B::type,我该怎么做?

正如你所展示的那样

using anchor_point = B::anchor_point;

对每个相关成员重复。这必须在包含您对要涵盖的成员的所有使用的范围内只出现一次。

没有其他方法,特别是没有等效于 using namespace 的命名空间,这使得所有成员对不合格的名称查找可见。