【发布时间】:2020-07-17 23:24:58
【问题描述】:
使用指令是否不适用于概念?为什么?
下面的例子不起作用,我收到一个编译器错误,说它需要一个类型。
#include <concepts>
namespace A::X {
struct BaseA {};
template < typename AType >
concept DerivedFromA = std::derived_from < AType, BaseA >;
}
namespace A {
using DerivedFromA = X::DerivedFromA;
}
我希望能够以 DerivedFromA 而不是 X::DerivedFromA 的形式从命名空间 A 访问概念 DerivedFromA
【问题讨论】:
-
您能否发布编译器的确切错误,包括行号和任何其他必要的信息??
-
您到底想达到什么目的?
using可能不适合使用。 -
概念不是类型。在这里不能使用
using是有道理的。 -
概念类似于类型的谓词,但在确定一个概念何时比另一个更严格限制时具有一些额外的实用性(例如,
random_access_iterator比forward_iterator严格限制更多)。这使得它们比类型更接近函数(仅限于返回布尔值)。事实上,在标准化之前,您曾经可以将它们拼写为concept bool Foo() { return ... }。 -
术语说明:using-directive 是
using namespace N;,这不是您正在做的事情。
标签: c++ generic-programming c++20 c++-concepts