22 March 2022

C++ 核心指南目录

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 语句。