Переместить семантику и std::unique_ptr в chaiscript

Как я могу зарегистрировать метод, который опирается на семантику перемещения и std::unique_ptr с движком chaiscript? Вот пример кода, с которым я не могу работать, используя chaiscript 5.8.5:

class Element;
class MyClass
{
public:
    void addElement(std::unique_ptr<Element>&&);
};

chaiscript::ModulePtr m = chaiscript::ModulePtr(new chaiscript::Module());
chaiscript::utility::add_class<MyClass>(*m, "MyClass", {
    chaiscript::constructor<MyClass ()>()
}, {
    {chaiscript::fun(&MyClass::addElement), "addElement"},
});

Это генерирует следующую ошибку внутри chaiscript:

dispatchkit/boxed_cast_helper.hpp:43:46: ошибка: 'имя типа' объявлено как указатель на ссылку типа 'std::__1::unique_ptr std::__1::default_delete > &&' return *static_cast(p);


person Dalzhim    schedule 13.11.2016    source источник


Ответы (1)


r-values ​​и unique_ptr теперь поддерживаются в ветке разработки (чтобы стать версией 6.0.0) ChaiScript, но в то время, когда был задан этот вопрос, это было невозможно.

person lefticus    schedule 19.12.2016