January 2018
Intermediate to advanced
374 pages
9h 53m
English
When accessing variables in the std::variant, we use the global function std::visit(). As you might have guessed, we have to use our main companion when dealing with heterogeneous types; the polymorphic lambda:
std::visit(
[](const auto& v){ std::cout << v; },
my_variant
);
The compiler then generates a regular C++ of the lambda, for every type contained in the variant. Thus, when invoking std::visit() with the lambda and variant type in the example, the compiler would generate code roughly similar to the following snippet where the polymorphic lambda is converted to a regular class with operator() overloads for every type in the variant