我正在阅读 Nicolai M. Josuttis 所著的《C++17 - 完整指南》一书。
第 14 章的标题是“使用可变参数 using 声明”。我不明白示例代码:
// Part 1: "inherit" all function call operators of passed based types:
template<typename... Ts>
struct overload : Ts...
{
using Ts::operator()...;
}
// Part 2: base types are deduced from passed arguments
// >>>> What is it ??
template<typename... Ts>
overload(Ts...) -> overload<Ts...>;
// Part 3
auto twice = overload {
[](std::string& s) { s += s; }
[](auto& v) { v *= 2; }
};
代码由 3 部分组成:
overload(Ts...)
如果我必须再次阅读之前的章节,请告诉我是哪一章!谢谢。
template<typename... Ts>
overload(Ts...) -> overload<Ts...>;
这是演绎指南。如果在没有显式指定
any模板参数的情况下实例化类
overload
,则会使用它将。然后它有助于推断类别为 overload<Ts...>
。