C 17继承了带有模板参数扣除指南的Lambdas集
C++17 Inheriting set of lambdas with template argument deduction guides
我正在查看std::variant
http://en.cppreference.com/w/cpp/utility/variant/visit/visit
该示例本质上包含以下几行(我经修改了(:
template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;
auto a = overloaded {
[](auto arg) { std::cout << arg << ' '; },
[](double arg) { std::cout << std::fixed << arg << ' '; },
[](const std::string& arg) { std::cout << std::quoted(arg) << ' '; },
};
代码基本上将列表中的每个lambda函数用作结构overloaded
的基类。第一行将Lambda的operator()
拉入结构范围。第二行使用类模板参数扣除指南(C 17(。
问题
我不理解overloaded
之后使用{ }
牙套的第3行。
在这里有什么样的C 机制?我们是否使用初始化列表并将其转换为变异模板参数,还是它是一种统一/骨料初始化?在此行中是否调用任何实际的构造函数?
有趣的是,如果我使用( )
。
它是汇总初始化,特别是所得类型的直接公共基础。由于C 17,因此基本子对象不必是汇总本身,因此它们是从启动器列表的元素初始化的。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- C++17中没有自动参数的模板lambdas
- C 17继承了带有模板参数扣除指南的Lambdas集
- 如何使C++11函数生效<>参数自动接受lambdas
- 使用auto参数从lambdas返回值
- C++Lambdas:捕获列表与参数列表
- 如何使用QT5中的lambdas将具有int参数的信号连接到具有枚举参数with的插槽
- lambdas的模板参数推导
- 引用参数到 lambdas
- 模板参数值中的Lambdas
- 通过Lambdas解包可变参数
- 函数作为模板参数的多态签名(使用lambdas)