现代C++教程

  1. 第二章
    1. 模板
      1. 函数后置返回
      2. 变长参数

第二章

模板

函数后置返回

// C++11
template<class T1, class T2>
auto Add11(T1 t1, T2 t2) -> decltype(t1 + t2)
{
    return t1 + t2;
}
// C++14
template<class T1, class T2>
auto Add14(T1 t1, T2 t2)
{
    return t1 + t2;
}

变长参数

template <class F, class ...Args>
auto string_format(F f, Args ...args)
{
    auto size =
            std::vsnprintf(nullptr, 0, f,
                    std::forward(args)...) + 1;
    std::string rst;
    rst.resize(size);
    std::vsnprintf(&rst[0], size, f, std::forward(args)...);
    return rst;
}