CppCoreGuidelines I.9 如果是模板接口,用 concept 编写参数文档
22 March 2022
理由:
使接口更清晰,编译时能检查。
比如:
使用 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
的不可变模板参数。