在 chaiscript 中移动语义和 std::unique_ptr
Move semantics and std::unique_ptr in 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: error: 'type name' declared as a pointer to a reference of type 'std::__1::unique_ptr
std::__1::default_delete > &&' return *static_cast(p);
r-values 和 unique_ptr 现在在 ChaiScript 的开发分支(成为版本 6.0.0)中得到支持,但在提出这个问题时这是不可能的。
我如何注册一个依赖移动语义的方法和 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: error: 'type name' declared as a pointer to a reference of type 'std::__1::unique_ptr std::__1::default_delete > &&' return *static_cast(p);
r-values 和 unique_ptr 现在在 ChaiScript 的开发分支(成为版本 6.0.0)中得到支持,但在提出这个问题时这是不可能的。