ChaiScript и STL

Я пытаюсь использовать std::list<arnAddr> (arnAddr — пользовательский Struct) в файле сценария Chai.
Но я получаю ошибку при разборе:

Error: "Missing clone or copy constructor for right hand side of equation" With parameters: (NSt3__14listIN3arn7arnAddrENS_9allocatorIS2_EEEE)`

Я добавляю следующее к парсеру chai:

ChaiScript interpreter;
interpreter.add(user_type<arnAddr>(), "Address");
interpreter.add(bootstrap::basic_constructors<arnAddr>("Address"));
interpreter.add(constructor<arnAddr(const int, const int)>(), "Address");
interpreter.add(constructor<arnAddr(arnIP, arnPort)>(), "Address");
interpreter.add(fun(&Database::getGroup, database), "group");
// std::list<arnAddr>& getGroup(); is the prototype

Файл сценария очень прост и содержит var group = group();

Что я получаю из сообщения об ошибке, так это то, что Chaiscript не знает, как копировать построить std::list<arnAddr>, Но как мне это исправить?

2

Решение

Как насчет того, чтобы начать так:

ChaiScript interpreter;
interpreter.add(user_type<arnAddr>(), "Address");
interpreter.add(bootstrap::basic_constructors<arnAddr>("Address"));
interpreter.add(user_type<std::list<arnAddr> >(), "AddressList");
interpreter.add(bootstrap::basic_constructors<std::list<arnAddr> >("AddressList"));

Это должно сообщить ChaiScript о контейнере (нет, он не добавит все возможные контейнеры автоматически — особенно необходим конструктор копирования)

Может быть, вам тоже понравится

interpreter.add(bootstrap::::standard_library::list_type<std::list<arnAddr> >("AddressList"));
2

Другие решения