see example中的overloaded
魔法如何
template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>; // how to read this line??
for (auto& v: vec) {
std::visit(overloaded {
[](auto arg) { std::cout << arg << ' '; },
[](double arg) { std::cout << std::fixed << arg << ' '; },
[](const std::string& arg) { std::cout << std::quoted(arg) << ' '; },
}, v);
}
工作,这意味着如何阅读上面标记的行? overload(Ts...)
是什么“功能”,这是什么样的C ++ 14/17功能?
感谢提示以及对在哪里可以找到这种语法的标准的一些参考? (我眼花)乱)