c'è un modo per farlo funzionare? Spero che l'idea, sto cercando di creare una lista per mezzo di coppie ricorsiveboost :: variant recursive trouble
#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;
}
Mi dispiace per "portare l'odio" un po 'in ritardo, per così dire, ma mi sono imbattuto in questo da una domanda correlata. Non c'è bisogno di mettere i puntatori in un boost.variant - il wrapper recursive_variant usa internamente un 'boost :: shared_ptr', quindi la tua richiesta 'dimensione infinita' è falsa. Lo schema basato sullo stack non è garantito e viene utilizzato solo se tutti i costruttori (per i parametri del modello) hanno un costruttore nothrow. Puoi leggere ulteriori informazioni al riguardo qui: http://www.boost.org/doc/libs/1_46_1/doc/html/variant/design.html#variant.design.never-empty (cerca "backup di heap temporaneo") . – phooji