根据类型检查概念

YSC*_*YSC 6 c++ c++-concepts c++20

如何从概念和类型中获取布尔类型的核心常量表达式?

template<class T>
concept Valid = requires(T t) {
    { t.x };
};

struct ValidExample   { int x; };
struct InValidExample {};

static_assert(?); // ValidExample is Valid
static_assert(?); // InValidExample is not Valid
Run Code Online (Sandbox Code Playgroud)

我开始研究概念,我想根据概念检查类型(更精确地说:从概念定义特征)。怎么做?

Jar*_*d42 15

您可以使用:

static_assert(Valid<ValidExample>); // ValidExample is Valid
static_assert(!Valid<InValidExample>); // InValidExample is not Valid
Run Code Online (Sandbox Code Playgroud)

作为模板变量(类型bool)。

  • &lt;插入facepalm&gt; (8认同)
  • @bartop:这没什么奇怪的。一个概念仅仅是一个“变量模板”。您可以像访问其他变量模板一样访问它。 (2认同)