[FYI] С++17: Генерация визитера для std::variant на лету
От: Анатолий Широков СССР  
Дата: 02.10.17 16:35
Оценка: 73 (8)
Сегодня на cppreference наткнулся на пример создания визитера для std::visit на лету:

#include <string>
#include <variant>
#include <iostream>

template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;

int main() {
    std::variant<int, double, std::string> v = {std::string{"10"}};
    std::visit(overloaded {
            [](auto arg) { std::cout << arg << ' '; },
            [](double arg) { std::cout << std::fixed << arg << ' '; },
            [](const std::string& arg) { std::cout << "\"" << arg << "\"" << ' '; },
        }, v);
}


Красиво!
std::variant std::visit
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.