ThePhD / sol2

Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
http://sol2.rtfd.io/
MIT License
4.12k stars 500 forks source link

exhaustive check feature not working #1420

Open maxdemarzi opened 1 year ago

maxdemarzi commented 1 year ago

I tested the new exhaustive check feature out as a Conan recipe: https://github.com/ragedb/sol2-recipe

When I run: conan create . 3.3.0-exhaustive@

When I try to return Nodes using exhaustive it returns NULL from the function:

        lua.set_function("NodesGet", sol::overload(
                                       [this](sol::exhaustive<std::vector<uint64_t>> ids) { return this->NodesGetViaLua(ids.value()); },
                                       [this](sol::exhaustive<std::vector<Link>> links) { return this->NodesGetByLinksViaLua(links.value()); }
                                       ));

The function itself is fine, I have this elsewhere and it returns correctly:

lua.set_function("LinksGetNode", &Shard::NodesGetByLinksViaLua, this);

Worst still when I try:

        lua.set_function("NodesGet", sol::overload(
                                       [this](sol::exhaustive_until<std::vector<uint64_t>, 1> ids) { return this->NodesGetViaLua(ids.value()); },
                                       [this](sol::exhaustive_until<std::vector<Link>, 1> links) { return this->NodesGetByLinksViaLua(links.value()); }
                                       ));

gives me a segfault.

The stacktrace:

stack trace:
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:905
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:934
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:712
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:180
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:712
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:261
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:723
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_check_get_qualified.hpp:121
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_check_get_qualified.hpp:136
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:1083
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:1287
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:165
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:201
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:229
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:276
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:378
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:599
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:907
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_overloaded.hpp:47
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_overloaded.hpp:54
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:295
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:302
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:315
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_overloaded.hpp:60
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_core.hpp:36
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/trampoline.hpp:105
/home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/trampoline.hpp:133

See this image while debugging as well:

exhaustive_until

Full debug info on stacktrace:

sol::stack::unqualified_getter<sol::detail::as_value_tag<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, void>::get_no_lua_nil(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:905
sol::stack::unqualified_getter<sol::detail::as_value_tag<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, void>::get(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:934
decltype(auto) sol::stack::stack_detail::unchecked_unqualified_get<sol::detail::as_value_tag<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:712
sol::stack::unqualified_getter<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, void>::get(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:180
decltype(auto) sol::stack::stack_detail::unchecked_unqualified_get<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:712
sol::stack::qualified_getter<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, void>::get(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_get_unqualified.hpp:261
decltype(auto) sol::stack::stack_detail::unchecked_get<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >(lua_State*, int, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:723
sol::optional<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>&> sol::stack::stack_detail::get_optional<sol::optional<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>&>, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&>(lua_State*, int, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_check_get_qualified.hpp:121
sol::optional<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>&> sol::stack::qualified_check_getter<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, void>::get<sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&>(lua_State*, int, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_check_get_qualified.hpp:136
decltype(auto) sol::stack::check_get<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&>(lua_State*, int, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:1083
decltype(auto) sol::stack::stack_detail::check_get_arg<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&>(lua_State*, int, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::stack::record&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack_core.hpp:1287
decltype(auto) sol::stack::stack_detail::eval<true, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, , 0ul, , sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>>, std::integer_sequence<unsigned long, 0ul>, lua_State*, int, sol::argument_handler<sol::types<sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> > >&, sol::stack::record&, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller&&, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:165
decltype(auto) sol::stack::stack_detail::call<true, 0ul, sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(sol::types<sol::basic_table_core<false, sol::basic_reference<false> > >, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, std::integer_sequence<unsigned long, 0ul>, lua_State*, int, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller&&, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:201
decltype(auto) sol::stack::call<true, sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(sol::types<sol::basic_table_core<false, sol::basic_reference<false> > >, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, lua_State*, int, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller&&, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:229
int sol::stack::call_into_lua<true, true, sol::basic_table_core<false, sol::basic_reference<false> >, , sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(sol::types<sol::basic_table_core<false, sol::basic_reference<false> >>, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, lua_State*, int, sol::wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, void>::caller&&, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/stack.hpp:276
int sol::call_detail::agnostic_lua_call_wrapper<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, true, false, true, 0, true, void>::call<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(lua_State*, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:378
int sol::call_detail::lua_call_wrapper<void, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, true, false, true, 0, true, void>::call<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(lua_State*, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:599
int sol::call_detail::call_wrapped<void, true, false, 0, true, true, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&>(lua_State*, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/call.hpp:907
int sol::function_detail::overloaded_function<0, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, ragedb::Shard::exhaustive_until(unsigned int)::{lambda(sol::exhaustive_until<std::vector<ragedb::Link, std::allocator<ragedb::Link> >, 1ul>)#13}>::call<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, 0ul, sol::basic_table_core<false, sol::basic_reference<false> >, sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >(sol::types<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}>, std::integral_constant<unsigned long, 0ul>, sol::types<sol::basic_table_core<false, sol::basic_reference<false> > >, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, lua_State*, int, int, std::tuple<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, ragedb::Shard::exhaustive_until(unsigned int)::{lambda(sol::exhaustive_until<std::vector<ragedb::Link, std::allocator<ragedb::Link> >, 1ul>)#13}>&) at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_overloaded.hpp:47
int sol::function_detail::overloaded_function<0, ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, ragedb::Shard::exhaustive_until(unsigned int)::{lambda(sol::exhaustive_until<std::vector<ragedb::Link, std::allocator<ragedb::Link> >, 1ul>)#13}>::on_success::operator()<sol::types<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}>, std::integral_constant<unsigned long, 0ul>, sol::types<sol::basic_table_core<false, sol::basic_reference<false> > >, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >, lua_State*&, int&, int&, std::tuple<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, ragedb::Shard::exhaustive_until(unsigned int)::{lambda(sol::exhaustive_until<std::vector<ragedb::Link, std::allocator<ragedb::Link> >, 1ul>)#13}>&>(sol::types<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}>&&, std::integral_constant<unsigned long, 0ul>&&, sol::types<sol::basic_table_core<false, sol::basic_reference<false> > >&&, sol::types<sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul> >&&, lua_State*&, int&, int&, std::tuple<ragedb::Shard::Shard(unsigned int)::{lambda(sol::exhaustive_until<std::vector<unsigned long, std::allocator<unsigned long> >, 1ul>)#12}, ragedb::Shard::exhaustive_until(unsigned int)::{lambda(sol::exhaustive_until<std::vector<ragedb::Link, std::allocator<ragedb::Link> >, 1ul>)#13}>&) const at /home/max/.conan/data/sol2/3.3.0-exhaustive/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/sol/function_types_overloaded.hpp:54