Нет.Суть boost :: variable заключается в том, что он имеет фиксированный размер и не выполняет динамическое размещение.Таким образом, это похоже на союз.Рекурсивное повышение :: вариант должно иметь бесконечный размер, чтобы содержать максимально возможное значение - явно невозможное.
Однако вы можете сделать это, передав его через указатель.Например:
struct nil { };
typedef boost::make_recursive_variant<nil,
std::pair<int, boost::scoped_ptr<boost::recursive_variant_> > >
variant_list_int;