25 August 2023

C++ 核心指南目录

“Use templates to express algorithms that apply to many argument types”

理由

通用化。精简代码。互操作。可重用。

例子

这个原则是 STL 的基础。一个简单的 find 算法,可以适用于多种不同的输入类型。

template<typename Iter, typename Val>
    // requires Input_iterator<Iter>
    //       && Equality_comparable<Value_type<Iter>, Val>
Iter find(Iter b, Iter e, Val v)
{
    // ...
}

注意

只有确实需要适配多种参数类型的时候,才使用模板。不要过度抽象。