decimad / luabind-deboostified

Create Lua bindings for your C++ code easily - my improvements
http://www.vrac.iastate.edu/vancegroup/docs/luabind/
Other
70 stars 27 forks source link

Fix compilation issues with gcc 7.x #38

Open azurepine opened 6 years ago

Xottab-DUTY commented 6 years ago

@decimad, will you review this?)

decimad commented 6 years ago

I will have a look

Xottab-DUTY commented 6 years ago

I hope this will be merged someday 😃

Wohlstand commented 6 years ago

Still failing on GCC 6.4 at me:

[ 93%] Building CXX object test/CMakeFiles/test_policies.dir/test_policies.cpp.o
In file included from /.../luabind/detail/conversion_policies/conversion_policies.hpp:36:0,
                 from /.../luabind/detail/object.hpp:383,
                 from /.../luabind/make_function.hpp:9,
                 from /.../luabind/function.hpp:8,
                 from /.../luabind/class.hpp:81,
                 from /.../luabind/luabind.hpp:28,
                 from /.../test/test_policies.cpp:25:
/.../luabind/detail/conversion_policies/function_converter.hpp: In instantiation of ‘void luabind::default_converter<F, typename std::enable_if<luabind::detail::is_function<typename luabind::remove_const_reference<T>::type>::value>::type>::to_lua(lua_State*, F) [with F = std::function<int(int, int)>; typename std::enable_if<luabind::detail::is_function<typename luabind::remove_const_reference<T>::type>::value>::type = void; lua_State = lua_State]’:
/.../luabind/detail/call.hpp:393:6:   required from ‘static void luabind::detail::invoke_struct<PolicyList, Signature, F>::call_struct<false, false, luabind::meta::index_list<ArgumentIndices ...> >::call(lua_State*, F&, typename luabind::detail::invoke_struct<PolicyList, Signature, F>::traits::argument_converter_tuple_type&) [with unsigned int ...ArgumentIndices = {}; PolicyList = luabind::meta::type_list<>; Signature = luabind::meta::type_list<std::function<int(int, int)> >; F = std::function<int(int, int)> (*)(); lua_State = lua_State; typename luabind::detail::invoke_struct<PolicyList, Signature, F>::traits::argument_converter_tuple_type = std::tuple<>]’
/.../luabind/detail/call.hpp:521:13:   required from ‘static int luabind::detail::invoke_struct<PolicyList, Signature, F>::invoke(lua_State*, const luabind::detail::function_object&, luabind::detail::invoke_context&, F&) [with PolicyList = luabind::meta::type_list<>; Signature = luabind::meta::type_list<std::function<int(int, int)> >; F = std::function<int(int, int)> (*)(); lua_State = lua_State]’
/.../luabind/detail/call.hpp:539:58:   required from ‘int luabind::detail::invoke(lua_State*, const luabind::detail::function_object&, luabind::detail::invoke_context&, F&) [with PolicyList = luabind::meta::type_list<>; Signature = luabind::meta::type_list<std::function<int(int, int)> >; F = std::function<int(int, int)> (*)(); lua_State = lua_State]’
/.../luabind/make_function.hpp:58:47:   required from ‘static bool luabind::detail::function_object_impl<F, Signature, InjectorList>::invoke_defer(lua_State*, luabind::detail::function_object_impl<F, Signature, InjectorList>*, luabind::detail::invoke_context&, int&) [with F = std::function<int(int, int)> (*)(); Signature = luabind::meta::type_list<std::function<int(int, int)> >; InjectorList = luabind::meta::type_list<>; lua_State = lua_State]’
/.../luabind/make_function.hpp:79:41:   required from ‘static int luabind::detail::function_object_impl<F, Signature, InjectorList>::entry_point(lua_State*) [with F = std::function<int(int, int)> (*)(); Signature = luabind::meta::type_list<std::function<int(int, int)> >; InjectorList = luabind::meta::type_list<>; lua_State = lua_State]’
/.../luabind/make_function.hpp:33:23:   required from ‘luabind::detail::function_object_impl<F, Signature, InjectorList>::function_object_impl(F) [with F = std::function<int(int, int)> (*)(); Signature = luabind::meta::type_list<std::function<int(int, int)> >; InjectorList = luabind::meta::type_list<>]’
/.../luabind/make_function.hpp:111:39:   required from ‘luabind::adl::object luabind::make_function(lua_State*, F, luabind::meta::type_list<Types2 ...>, luabind::meta::type_list<TailTypes ...>) [with F = std::function<int(int, int)> (*)(); SignatureElements = {std::function<int(int, int)>}; PolicyInjectors = {}; lua_State = lua_State]’
/.../luabind/make_function.hpp:117:23:   required from ‘luabind::adl::object luabind::make_function(lua_State*, F, luabind::meta::type_list<Types2 ...>) [with F = std::function<int(int, int)> (*)(); PolicyInjectors = {}; lua_State = lua_State]’
/.../luabind/function.hpp:27:30:   required from ‘void luabind::detail::function_registration<F, PolicyInjectors>::register_(lua_State*) const [with F = std::function<int(int, int)> (*)(); PolicyInjectors = luabind::meta::type_list<>; lua_State = lua_State]’
/.../test/test_policies.cpp:278:1:   required from here
/.../luabind/detail/conversion_policies/function_converter.hpp:86:17: error: ‘make_function’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
    make_function(L, value).push(L);
    ~~~~~~~~~~~~~^~~~~~~~~~
In file included from /.../luabind/function.hpp:8:0,
                 from /.../luabind/class.hpp:81,
                 from /.../luabind/luabind.hpp:28,
                 from /.../test/test_policies.cpp:25:
/.../luabind/make_function.hpp:121:9: note: ‘template<class F> luabind::adl::object luabind::make_function(lua_State*, F)’ declared here, later in the translation unit
  object make_function(lua_State* L, F f)
         ^~~~~~~~~~~~~

LuaBind itslef now buildable, however, the "test_policies" fails to be built