22 March 2022

C++ 核心指南目录

理由:

使接口更清晰,编译时能检查。

比如:

使用 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)
{
    // ...
}

注意:

很快编译器就能支持 C++20 的 requires 语句。GCC 6.1 之后的版本已经支持了。

强化:

目前编程语言还不支持。等标准制定后,警告不符合 requires 的不可变模板参数。