根据类型检查概念

时间:2019-04-23 12:36:38

标签: 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

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

1 个答案:

答案 0 :(得分:15)

您可以使用:

static_assert(Valid<ValidExample>); // ValidExample is Valid
static_assert(!Valid<InValidExample>); // InValidExample is not Valid

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