2015-03-10 2 views
2

Представьте У меня есть простое определение типа как это:автореферентного подталкивания вариант

typedef boost::variant<int, double> Value; 

Но, теперь я хочу вариант также провести вектор себя:

typedef boost::variant<int, double, std::vector<Value>> Value; 

Это подведет для компиляции из-за Значение не известно при определении варианта. Любые советы о том, как это сделать?

ответ

4

Несомненно.

typedef boost::make_recursive_variant< 
     int, 
     double, 
     std::vector<boost::recursive_variant_> >::type Value; 

Смотрите документацию по "Advanced Topics: Recursive variant types"

+0

на перечитывая вопрос, я заметил, что я пропустил 'VECTOR' там. Скорректированный мой ответ :) Теперь пример соответствует _exactly_ тот, который содержится в документации. – sehe

+0

Это прекрасно - спасибо! – Cthutu