У меня возникли проблемы с обертыванием варианта.
Я прочитал, что могу использовать std :: monostate для обозначения пустого состояния в качестве одной из альтернатив внутри варианта.Однако как тогда использовать шаблон посетителя, который облегчается с помощью std :: visit?
#include <variant>
struct Visitor{
void operator()(double){};
void operator()(int){};
};
int main() {
std::variant<std::monostate, int, double> v = 1;
std::visit(Visitor{}, v);
}
не работает и не обеспечивает перегрузку оператора вызова для std :: monostate.
Если я попытаюсь включить универсальную ссылочную перегрузку для оператора вызова, он просто сопоставит все и больше не будет использовать две конкретные перегрузки