¿Hay alguna manera de hacer esto? Espero que obtendrá la idea, estoy tratando de crear una lista por medio de pares recursivasboost :: variante problema recursivo
#include <boost/variant.hpp>
#include <utility>
struct nil {};
typedef boost::make_recursive_variant<nil, std::pair<int, boost::recursive_variant_ >>::type list_t;
int main() {
list_t list = { 1, (list_t){ 2, (list_t){ 3, nil() } } };
return 0;
}
Perdón por 'traer el odio' un poco tarde, por así decirlo, pero acabo de toparme con esto por una pregunta relacionada. No hay necesidad de poner punteros en un boost.variant: el reiniciador recursive_variant usa un 'boost :: shared_ptr' internamente, por lo que su reclamo de 'tamaño infinito' es falso. El esquema basado en la pila no está garantizado y solo se usa si todos los constructores (para los parámetros de la plantilla) tienen un constructor de nohrow. Puede leer más sobre esto aquí: http://www.boost.org/doc/libs/1_46_1/doc/html/variant/design.html#variant.design.never-empty (busque 'copia de seguridad de pila temporal') . – phooji