Один из способов убедиться, что у вас есть четко определенный вариант, - включить «NullType» в список вариантов.Несмотря на то, что может потребоваться написать больше кода в «посетителях», которые вы напишете для его использования, они могут выдавать исключения, чтобы операторы знали, что что-то не так.Я вообще против таких проверок во время выполнения, но иногда другого пути нет.Достаточно сказать, что:
class NullType{};
Затем добавьте его в качестве самого первого аргумента в список вариантов.Как уже говорили другие, и документация поддержки описывает, что у вас никогда не будет ситуации, когда вариант пуст.Однако вы можете выполнить проверку типа, чтобы убедиться, что вы никогда не сможете скомпилировать с «NullType», если вы не перегружаете функции или у вас возникает исключение времени выполнения, если у вас есть «NullType».1005 * Теперь ваш вариант:
boost::variant<NullType, int, double, long double> number;
class DoSomething : boost:static_visitor<void>{
public:
void visit(const int& _item);
void visit(const double& _item);
void visit(const long double& _item);
void visit(const NullType& _uhOh);
};