using 指令不适用于 c++20 概念吗?

Doesn't using directives work with c++20 concepts?

using 指令不适用于概念吗?为什么?

下面的示例不起作用,我收到一个编译器错误,提示它需要一个类型。

#include <concepts>

namespace A::X {

  struct BaseA {};

  template < typename AType >
    concept DerivedFromA = std::derived_from < AType, BaseA >;

}

namespace A {

  using DerivedFromA = X::DerivedFromA;

}

我希望能够从命名空间 A 作为 DerivedFromA 而不是 X::DerivedFromA

访问概念 DerivedFromA

Does using directives not work with concepts? why?

因为您使用 using 的方式声明了类型别名。 concepts 不是类型模板。

打算做的是使一个名称空间中的名称在另一个名称空间中可用。看起来像这样:

namespace A
{
  using X::DerivedFromA;
}

这适用于所有类型的名称。