【发布时间】:2022-01-19 10:49:58
【问题描述】:
看来您可以将 lambda 放入概念中,然后在其中编写代码。让我们以此为例。我更喜欢这些概念的标准概念,并记住这仅用于本示例 - godbolt
template<class T>
concept labdified_concept =
requires {
[](){
T t, tt; // default constructible
T ttt{t}; // copy constructible
tt = t; //copy assignable
tt = std::move(t); // move assignable
};
};
代替:
template<class T>
concept normal_concept =
std::default_initializable<T> && std::movable<T> && std::copy_constructible<T>;
lambdification 是一种改进还是一种不好的做法?从可读性的角度来看也是如此。
【问题讨论】:
-
但是正如您发布的链接所示,这实际上不起作用。如果这个概念失败了,你会得到一个硬错误,因为 lambda 中的代码被实例化了。
标签: c++ c++20 c++-concepts