int*, char, char*, double, double*>...
как можно это сделать такой алиас красиво, передавая только список типов без указателей?
template<typename ...Ts> using pvariant = boost::variant<Ts*...>; не сработает?
так будет только <int*, char*...>
boost::variant<Ts..., Ts*...>;
так сработает, но тут порядок важен я в идеале хочу в конце выйти на variant<pair<int, int*>, pair<char, char*>> :D
А вот пары сделать просто
Раз уж я начал делать чуть раньше пример, чем увидел этот ответ, для истории оставлю реализацию и она же, но проще — без собственного type_list, но с потенциально большим компилтаймом из-за инстанцирования множества более сложно реализованных вариантов
template<typename ... Types> using idontknowwhereyouwanttouseit = variant<void*, Types...>;
кстати, если уж на то пошло, (реально не знаю зачем тебе это нужно), но template<typename ... Types> using idontknowwhereyouwanttouseit = variant<std::pair<Types, std::add_pointer_t<Types>>...>;
разобрался, работает! всем спасибо)
Обсуждают сегодня