【发布时间】:2021-05-08 21:03:58
【问题描述】:
我在查看 C++20 特性时发现了 Concepts。我发现他们为模板参数添加了验证,但除此之外,我不明白 C++20 概念的真实用例是什么。
C++ 已经有了std::is_integral 之类的东西,它们可以很好地执行验证。
我确定我遗漏了一些关于 C++20 概念及其功能的内容。
【问题讨论】:
-
概念是 SFINAE 的语法糖。它们不允许以前不可能的任何事情,但它们使完成 SFINAE 的语法更加更可口。
-
考虑named requirements。从某种意义上说,概念从一开始就存在,但直到现在它们才成为一等公民
-
@PatrickRoberts 它们有助于避免 SFINAE,但它们不是它的语法糖。
if constexpr对此也有帮助。 -
@PatrickRoberts 他们确实允许在可变参数模板构造函数上实现以前不可能的事情,例如 SFINAE,从而禁用非模板方法或概念合并。
标签: c++ c++20 c++-concepts