pac*_*der 2 c++ lambda multiple-inheritance template-argument-deduction c++17
我正在查看http://en.cppreference.com/w/cpp/utility/variant/visit上的文章std::variant
该示例基本上包含以下几行(由我轻轻修改):
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) << ' '; },
};
Run Code Online (Sandbox Code Playgroud)
代码基本上使用列表中的每个lambda函数作为struct的基类overloaded.第一行将lambda operator()引入结构的范围.第二行使用类模板参数推导指南(C++ 17).
题
我不明白第3行{ }后使用括号overloaded.
这里有什么样的C++机制?我们是否使用初始化列表并将其转换为可变参数模板参数,或者它是一种统一/聚合初始化?是否在这一行中调用了任何实际的构造函数?
有趣的是,如果我使用,施工将失败( ).
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |