如何编写一个要求类具有noexcept
构造函数的概念?例如,以下static_assert
在Clang 15.0.7中为真,尽管我觉得它不应该为真。
class Ragdoll {
int age_ = -1;
public:
Ragdoll(int age) /* noexcept */ : age_(age) {}
int meow() const;
int lose_hair();
};
template<typename Cat>
concept cat = requires(Cat cat) {
noexcept(Cat{42});
{ cat.meow() } -> std::same_as<int>;
};
static_assert(cat<Ragdoll>);
noexcept
表达式在概念中做什么?(随意也链接任何好的概念教程)
2条答案
按热度按时间axr492tv1#
您可以检查表达式是否为
noexcept
,在一个requires expression中,noexcept
在->
或;
之前:55ooxyrt2#
好吧,显然下面的工作(在这个意义上,它触发了
static_assert
),虽然我更喜欢以某种方式在requires
子句中指定它。