I am trying to add some of my own types into ChaiScript, so I can use it for scripting. Im kinda confused on the usage of chaiscript::Boxed_Value. Lets say I want to make module to support std::optional<T>. Which of the following would be more correct:
template<typename T>
chaiscritpt::ModulePtr optional_module<T>(const std::string& typename)
{
chaiscript::ModulePtr m;
m->add(chaiscript::user_type<std::optional<T> >("Optional" + typename));
m->add(chaiscript::fun<T (std::optional<T>::*)(T)>(&std::optional<T>::value_or), "value_or");
/* ... */
}
chaiscript::ModulePtr optional_module()
{
chaiscript::ModulePtr m;
m->add(chaiscript::user_type<std::optional< chaiscript::Boxed_Value> >("Optional"));
m->add(chaiscript::fun<chaiscript::Boxed_Value (std::optional<chaiscript::Boxed_Value>::*)(chaiscript::Boxed_Value)>(&std::optional<chaiscript::Boxed_Value>::value_or), "value_or");
}