CppCoreGuidelines I.9 如果是模板接口,用 concept 编写参数文档
22 March 2022
I.9: If an interface is a template, document its parameters using concepts
理由
可以使接口更清晰,可以在编译时进行检查。
例子
使用C++20风格的要求规格(requirements specification)
template<typename Iter, typename Val> requires input_iterator<Iter> && equality_comparable<ValueType<Iter>, Val> Iter find(Iter first, Iter last, Val v) { // ... }
强化
如果出现任何没有约束的非可变参数模板,就进行警告。约束条件可以是声明或
requires
语句。