// Make this object complex and cost longer compile time... #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char** argv) { using Type = std::variant; Type a, b, c; a = 5; b = 3.0; c = 4.0f; double r; std::visit([&](auto a, auto b, auto c) { r = a + b + c; }, a, b, c); std::visit([&](auto a, auto b, auto c) { r = a + b - c; }, a, b, c); std::visit([&](auto a, auto b, auto c) { r = a - b - c; }, a, b, c); std::visit([&](auto a, auto b, auto c) { r = (a + b + c) * 2; }, a, b, c); std::visit([&](auto a, auto b, auto c) { r = (a + b - c) * 3; }, a, b, c); return 0; }