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

标签 c++ generic-programming c++20 c++-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 作为 DerivedFromA 而不是 X::DerivedFromA

最佳答案

Does using directives not work with concepts? why?

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

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

namespace A
{
  using X::DerivedFromA;
}

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

关于c++ - using 指令不适用于 c++20 概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62962969/

相关文章:

c++ - 实现一个Windows资源管理器扩展 View 界面

c++ - 尝试使用 boost lambda,但我的代码无法编译

c++ - 用于控制算法的仿函数的编译时容器?

c# - 有没有办法从扩展方法中获取通用类型?

c++ - 编译模板时无限循环

c++ - 在 C++20 中不能使用 { } 初始化,但在 C++17 中

c++ - 在 Windows 中配置 cmake 项目时未找到 Eigen3_DIR

c++ - Visual C++ 不会自动完成类成员

c++ - boost::range::combine 不适用于 std::subrange

c++ - 为什么在 consteval 构造函数的编译时不知道 "this"?