我已经尝试了一段时间,但我无法让它发挥作用。
在Visual Studio 2017中,如何创建“访问”#39;获取std :: variant和任意数量的回调的函数,并使用提取的变量值调用正确的回调函数。
这些是我希望实现的目标:
调用代码如下:
// std::monostate represents nil value.
using VarT = std::variant<std::monostate, bool, int_t, double, std::string_view>;
VarT var = ...
Visit(var,
[](int_t) {},
[](std::string_view) {},
// [](Foo&), // Is ok if this gives error, as Foo is not a type in VarT
[]() {} // Bonus: the default case, if var is not an int_t or a string_view
);
那里有例子 - &gt; http://en.cppreference.com/w/cpp/utility/variant/visit, 但Visual Studio 2017不支持执行此操作所需的一些新功能。