Czy jest jakiś sposób, aby to zadziałało? Mam nadzieję, że masz pomysł, Próbuję utworzyć listę za pomocą rekurencyjnych parboost :: 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;
}
Przepraszam za "sprowadzenie nienawiści" trochę późno, że tak powiem, ale właśnie natknąłem się na to z pokrewnego pytania. Nie ma potrzeby umieszczania wskaźników w boost.variant - opakowanie recursive_variant używa wewnętrznie 'boost :: shared_ptr', więc twój" nieskończony rozmiar "jest fałszywy. Schemat oparty na stosie nie jest gwarantowany i jest używany tylko wtedy, gdy wszystkie konstruktory (dla parametrów szablonu) mają konstruktor nonhrow. Więcej na ten temat można przeczytać tutaj: http://www.boost.org/doc/libs/1_46_1/doc/html/variant/design.html#variant.design.never-empty (poszukaj "tymczasowej kopii zapasowej sterty") . – phooji