New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot override member function for a class instance #468

Closed
kornerr opened this Issue Aug 2, 2017 · 21 comments

Comments

Projects
None yet
2 participants
@kornerr

kornerr commented Aug 2, 2017

Hi.
I try to override member function for a class instance.
The registration of the class and its methods is here: https://github.com/kornerr/cpp-callback-script/blob/master/main.cpp#L79
The script to execute is here: https://github.com/kornerr/cpp-callback-script/blob/master/script.lua

I get the following error:
terminate called after throwing an instance of 'sol::error' what(): lua: error: /home/kornerr/p/cpp-callback-script/script.lua:10: attempt to index a sol.EnvironmentClient value (global 'ec') Aborted

Am I missing something here?
In case such functionality is not possible, what's the best way to achieve some kind of overriding?

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 2, 2017

Owner

I don't believe I have support for overriding a method you bind from C++. You can override methods first defined in Lua, but if they were bound in C++ they are permanent fixtures.

I could look into supporting this, I suppose? It seems like a waste but I might as well try...

Owner

ThePhD commented Aug 2, 2017

I don't believe I have support for overriding a method you bind from C++. You can override methods first defined in Lua, but if they were bound in C++ they are permanent fixtures.

I could look into supporting this, I suppose? It seems like a waste but I might as well try...

@ThePhD ThePhD self-assigned this Aug 2, 2017

@ThePhD ThePhD added this to the Feature milestone Aug 2, 2017

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 2, 2017

Well, my goal is to have some C++ skeleton that Lua can fill. Any other way to achieve similar callback functionality would be good for me.

kornerr commented Aug 2, 2017

Well, my goal is to have some C++ skeleton that Lua can fill. Any other way to achieve similar callback functionality would be good for me.

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 2, 2017

Owner

You can define the dummy methods in Lua in the first place, and then they would be overridable. Also, note that if you're trying to fill in extra methods for that object specifically (and not the whole class), then what you're trying to do will never work at all with sol2 (you can only override for the whole class, e.g..

function EnvironmentClient:respondToKey( ... )
...
end

If you want a callback, then write in a callback member variable or make it a function: set_XXX_callback( my_lua_function ), then when someone calls the method ec:Method( ... ) it will call the callback value you stored in the class. sol2 supports seriealization to and from std::function.

Owner

ThePhD commented Aug 2, 2017

You can define the dummy methods in Lua in the first place, and then they would be overridable. Also, note that if you're trying to fill in extra methods for that object specifically (and not the whole class), then what you're trying to do will never work at all with sol2 (you can only override for the whole class, e.g..

function EnvironmentClient:respondToKey( ... )
...
end

If you want a callback, then write in a callback member variable or make it a function: set_XXX_callback( my_lua_function ), then when someone calls the method ec:Method( ... ) it will call the callback value you stored in the class. sol2 supports seriealization to and from std::function.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 2, 2017

Thanks for the callback idea, I'm almost there.
Registration (class, its callbacks): https://github.com/kornerr/cpp-callback-script/blob/master/main.cpp#L107
Script that provides callbacks for a class instance: https://github.com/kornerr/cpp-callback-script/blob/master/script.lua

However, I can't return array/table from the callback. I get "Segmentation fault" again.

kornerr commented Aug 2, 2017

Thanks for the callback idea, I'm almost there.
Registration (class, its callbacks): https://github.com/kornerr/cpp-callback-script/blob/master/main.cpp#L107
Script that provides callbacks for a class instance: https://github.com/kornerr/cpp-callback-script/blob/master/script.lua

However, I can't return array/table from the callback. I get "Segmentation fault" again.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

I worked around the issue by returning a new class instance, which carries Strings inside. However, this seems like an ugly solution.
Any idea how to return an array/table without intermediaries?

kornerr commented Aug 3, 2017

I worked around the issue by returning a new class instance, which carries Strings inside. However, this seems like an ugly solution.
Any idea how to return an array/table without intermediaries?

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 3, 2017

Owner

@kornerr I have tests and other things that let me return a std::vector<std:string> without issue into Lua. You will need to explain to what segfaults, when.

Owner

ThePhD commented Aug 3, 2017

@kornerr I have tests and other things that let me return a std::vector<std:string> without issue into Lua. You will need to explain to what segfaults, when.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

Can you point me to those tests?
I only have the sample application that I linked above :)

kornerr commented Aug 3, 2017

Can you point me to those tests?
I only have the sample application that I linked above :)

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

And I'm exporting from Lua to C++.

kornerr commented Aug 3, 2017

And I'm exporting from Lua to C++.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

C++ -> Lua way is working fine with sol::nested, as you already explained. Vice versa does not.

kornerr commented Aug 3, 2017

C++ -> Lua way is working fine with sol::nested, as you already explained. Vice versa does not.

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 3, 2017

Owner

You have to wrap the return type with sol::as_table if you expect the return to behave like a table as well. See https://github.com/ThePhD/sol2/blob/develop/test_containers.cpp#L14 (you can also use sol::nested as well in this case).

You can get additional safety traps and information by turning on SOL_CHECK_ARGUMENTS. I suggest turning it on so you can get better diagnostics. See the safety page for more information.

Owner

ThePhD commented Aug 3, 2017

You have to wrap the return type with sol::as_table if you expect the return to behave like a table as well. See https://github.com/ThePhD/sol2/blob/develop/test_containers.cpp#L14 (you can also use sol::nested as well in this case).

You can get additional safety traps and information by turning on SOL_CHECK_ARGUMENTS. I suggest turning it on so you can get better diagnostics. See the safety page for more information.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

The examples you linked to talk about C++ side as the origin, whereas I'm talking about Lua as the origin.
I have refactored the sample in sol branch: https://github.com/kornerr/cpp-callback-script/tree/sol
You can run it (it only depends on sol in cpp-callback-script_dir/../sol2 and lua) and see the difference when you change useStrings flag in script.lua:

-- Use strings.
if (useStrings) then
    ec.callbackCall = function(key, values)
        printValues("call", values)
        return {"Z", "A"} -- <----- !!! THIS CRASHES !!!
    end
-- Use vector.
else
    ec.callbackCallVector = function(key, vector)
        printValues("callVector", vector.values)
        v = Vector.new()
        v:setValues({"Z", "A"})
        return v -- <---- !!! THIS IS FINE !!!
    end
end

I get the crash when useStrings = true, but everything works fine for useStrings = false.

kornerr commented Aug 3, 2017

The examples you linked to talk about C++ side as the origin, whereas I'm talking about Lua as the origin.
I have refactored the sample in sol branch: https://github.com/kornerr/cpp-callback-script/tree/sol
You can run it (it only depends on sol in cpp-callback-script_dir/../sol2 and lua) and see the difference when you change useStrings flag in script.lua:

-- Use strings.
if (useStrings) then
    ec.callbackCall = function(key, values)
        printValues("call", values)
        return {"Z", "A"} -- <----- !!! THIS CRASHES !!!
    end
-- Use vector.
else
    ec.callbackCallVector = function(key, vector)
        printValues("callVector", vector.values)
        v = Vector.new()
        v:setValues({"Z", "A"})
        return v -- <---- !!! THIS IS FINE !!!
    end
end

I get the crash when useStrings = true, but everything works fine for useStrings = false.

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 3, 2017

Owner

It's still applicable.

Returning a {"Z", "A"} returns a Lua table (sol::table). These are distinct entities from std:: containers (vectors or anything else). Your std::function callback returns a Strings (std::vector<std::string>), so you're running into the same problem you had at the beginning of this post: Lua is handing you a Table, you're expecting a std::vector<std::string>. The std::function with sol2 works liek this:

  1. (Prep) Create a sol::function, stuff it inside a std::function with its fixed signature
  2. Pull the arguments into Lua when called
  3. Serialize the return value out of Lua on each function call

Step 3 is the segfault.

I'm sorry the behavior is slightly unintuitive, but for the sake of performance and serialization cost savings, we have to make std::vector a distinct entity that is transported through sol2 like a userdata and not like a table. This means that in many cases we do lose easy interop.

I might be able to make a change soon that would allow me to open up a few possibilities when someone takes a ContainerType or a const ContainerType&, but even that is iffy and likely to violate user expectations even further about what is and is not usable in many situations.

Please try to add sol::nested as part of the callback signature for your type, or put a lambda inbetween that explicitly converts the table return for you.

Owner

ThePhD commented Aug 3, 2017

It's still applicable.

Returning a {"Z", "A"} returns a Lua table (sol::table). These are distinct entities from std:: containers (vectors or anything else). Your std::function callback returns a Strings (std::vector<std::string>), so you're running into the same problem you had at the beginning of this post: Lua is handing you a Table, you're expecting a std::vector<std::string>. The std::function with sol2 works liek this:

  1. (Prep) Create a sol::function, stuff it inside a std::function with its fixed signature
  2. Pull the arguments into Lua when called
  3. Serialize the return value out of Lua on each function call

Step 3 is the segfault.

I'm sorry the behavior is slightly unintuitive, but for the sake of performance and serialization cost savings, we have to make std::vector a distinct entity that is transported through sol2 like a userdata and not like a table. This means that in many cases we do lose easy interop.

I might be able to make a change soon that would allow me to open up a few possibilities when someone takes a ContainerType or a const ContainerType&, but even that is iffy and likely to violate user expectations even further about what is and is not usable in many situations.

Please try to add sol::nested as part of the callback signature for your type, or put a lambda inbetween that explicitly converts the table return for you.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 3, 2017

Can you please show me where to put lambda to convert sol::nested<Strings> to Strings?

kornerr commented Aug 3, 2017

Can you please show me where to put lambda to convert sol::nested<Strings> to Strings?

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 3, 2017

Owner

There are many ways to do it, but this is the most elegant I can think of that will keep your Lua syntax approximately the same. You can use a sol2 property to have a function called when callbackCall is set and get.

lua.new_usertype<EnvironmentClient>(
        "EnvironmentClient",
        "callbackCall", sol::property( [](EnvironmentClient& ec, sol::function lua_callback) {
                ec.callbackCall = [=](const String& key, const Strings& values) -> Strings { 
                        sol::nested<Strings> return_value = lua_callback(key, values);
                        return std::move(return_value.source);
                }
        } ),
        "callbackRespondsToKey", &EnvironmentClient::callbackRespondsToKey
);
Owner

ThePhD commented Aug 3, 2017

There are many ways to do it, but this is the most elegant I can think of that will keep your Lua syntax approximately the same. You can use a sol2 property to have a function called when callbackCall is set and get.

lua.new_usertype<EnvironmentClient>(
        "EnvironmentClient",
        "callbackCall", sol::property( [](EnvironmentClient& ec, sol::function lua_callback) {
                ec.callbackCall = [=](const String& key, const Strings& values) -> Strings { 
                        sol::nested<Strings> return_value = lua_callback(key, values);
                        return std::move(return_value.source);
                }
        } ),
        "callbackRespondsToKey", &EnvironmentClient::callbackRespondsToKey
);
@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 4, 2017

This code does not build. I get the following error:

[ 50%] Building CXX object CMakeFiles/cpp-callback-script.dir/src/main.cpp.o
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/reference.hpp:25:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/types.hpp: In instantiation of ‘sol::nested<T>::nested(Args&& ...) [with Args = {sol::function_result}; T = std::vector<std::__cxx11::basic_string<char> >]’:
/home/kornerr/p/cpp-callback-script/src/main.cpp:88:75:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/types.hpp:396:62: error: call of overloaded ‘vector(sol::function_result)’ is ambiguous
   nested(Args&&... args) : source(std::forward<Args>(args)...) {}
                                                              ^
In file included from /usr/include/c++/5/vector:64:0,
                 from /home/kornerr/p/cpp-callback-script/src/Common.h:6,
                 from /home/kornerr/p/cpp-callback-script/src/EnvironmentClient.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/Environment.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:2:
/usr/include/c++/5/bits/stl_vector.h:373:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(initializer_list<value_type> __l,
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:277:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(size_type __n, const allocator_type& __a = allocator_type())
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = sol::constructor_list<sol::types<> >&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(sol::constructor_list<sol::types<> >&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘bool sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::contains_index() const [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:590:59:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:488:67: error: no matching function for call to ‘is_indexer(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const&)’
    (void)detail::swallow{ 0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0) ... };
                                                                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:169:14: note: candidate: int sol::usertype_detail::is_indexer(sol::string_detail::string_shim)
   inline int is_indexer(string_detail::string_shim s) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:169:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:179:14: note: candidate: int sol::usertype_detail::is_indexer(sol::meta_function)
   inline int is_indexer(meta_function mf) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:179:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:189:14: note: candidate: int sol::usertype_detail::is_indexer(sol::call_construction)
   inline int is_indexer(call_construction) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:189:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:193:14: note: candidate: int sol::usertype_detail::is_indexer(sol::base_classes_tag)
   inline int is_indexer(base_classes_tag) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:193:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:488:4: error: no matching function for call to ‘std::initializer_list<int>::initializer_list(<brace-enclosed initializer list>)’
    (void)detail::swallow{ 0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0) ... };
    ^
In file included from /usr/include/c++/5/bits/range_access.h:36:0,
                 from /usr/include/c++/5/string:51,
                 from /home/kornerr/p/cpp-callback-script/src/Common.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/EnvironmentClient.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/Environment.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:2:
/usr/include/c++/5/initializer_list:66:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list() [with _E = int]
       constexpr initializer_list() noexcept
                 ^
/usr/include/c++/5/initializer_list:66:17: note:   candidate expects 0 arguments, 2 provided
/usr/include/c++/5/initializer_list:62:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list(std::initializer_list<_E>::const_iterator, std::initializer_list<_E>::size_type) [with _E = int; std::initializer_list<_E>::const_iterator = const int*; std::initializer_list<_E>::size_type = long unsigned int]
       constexpr initializer_list(const_iterator __a, size_type __l)
                 ^
/usr/include/c++/5/initializer_list:62:17: note:   conversion of argument 2 would be ill-formed:
/usr/include/c++/5/initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(const std::initializer_list<int>&)
     class initializer_list
           ^
/usr/include/c++/5/initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/5/initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(std::initializer_list<int>&&)
/usr/include/c++/5/initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [19], void>::caller; Args = {const char (&)[19]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[19]; Args = {}; F = char [19]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[19]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [19], void>::caller) (const char [19])’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [19]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[19]>((* & args#0))’ (type ‘const char [19]’) to type ‘char (&)[19]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [22], void>::caller; Args = {const char (&)[22]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[22]; Args = {}; F = char [22]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[22]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [22], void>::caller) (const char [22])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [22]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[22]>((* & args#0))’ (type ‘const char [22]’) to type ‘char (&)[22]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [4], void>::caller; Args = {const char (&)[4]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[4]; Args = {}; F = char [4]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[4]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [4], void>::caller) (const char [4])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [4]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[4]>((* & args#0))’ (type ‘const char [4]’) to type ‘char (&)[4]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [5], void>::caller; Args = {const char (&)[5]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[5]; Args = {}; F = char [5]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[5]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [5], void>::caller) (const char [5])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [5]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[5]>((* & args#0))’ (type ‘const char [5]’) to type ‘char (&)[5]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 2ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 2ul; N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; F = const char (&)[19]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 2ul; N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; F = const char (&)[19]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 4ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 4ul; N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; F = const char (&)[22]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 4ul; N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; F = const char (&)[22]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 6ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 6ul; N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; F = const char (&)[4]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 6ul; N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; F = const char (&)[4]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 8ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 8ul; N = sol::constructor_list<sol::types<> >&; F = const char (&)[5]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(const sol::constructor_list<sol::types<> >&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = sol::constructor_list<sol::types<> >&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 8ul; N = sol::constructor_list<sol::types<> >&; F = const char (&)[5]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(sol::constructor_list<sol::types<> >&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
CMakeFiles/cpp-callback-script.dir/build.make:62: recipe for target 'CMakeFiles/cpp-callback-script.dir/src/main.cpp.o' failed
make[2]: *** [CMakeFiles/cpp-callback-script.dir/src/main.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/cpp-callback-script.dir/all' failed
make[1]: *** [CMakeFiles/cpp-callback-script.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

kornerr commented Aug 4, 2017

This code does not build. I get the following error:

[ 50%] Building CXX object CMakeFiles/cpp-callback-script.dir/src/main.cpp.o
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/reference.hpp:25:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/types.hpp: In instantiation of ‘sol::nested<T>::nested(Args&& ...) [with Args = {sol::function_result}; T = std::vector<std::__cxx11::basic_string<char> >]’:
/home/kornerr/p/cpp-callback-script/src/main.cpp:88:75:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/types.hpp:396:62: error: call of overloaded ‘vector(sol::function_result)’ is ambiguous
   nested(Args&&... args) : source(std::forward<Args>(args)...) {}
                                                              ^
In file included from /usr/include/c++/5/vector:64:0,
                 from /home/kornerr/p/cpp-callback-script/src/Common.h:6,
                 from /home/kornerr/p/cpp-callback-script/src/EnvironmentClient.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/Environment.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:2:
/usr/include/c++/5/bits/stl_vector.h:373:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(initializer_list<value_type> __l,
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:277:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(size_type __n, const allocator_type& __a = allocator_type())
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = sol::constructor_list<sol::types<> >&; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:581:92:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:215:44: error: no matching function for call to ‘make_shim(sol::constructor_list<sol::types<> >&)’
    string_detail::string_shim s = make_shim(arg);
                                            ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘bool sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::contains_index() const [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:590:59:   required from ‘sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/raii.hpp:65:68:   required from ‘std::unique_ptr<_Tp, _Dp> sol::detail::make_unique_deleter(Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Dx = sol::detail::deleter; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:39:202:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::verified_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:42:158:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::add_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:488:67: error: no matching function for call to ‘is_indexer(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const&)’
    (void)detail::swallow{ 0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0) ... };
                                                                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:169:14: note: candidate: int sol::usertype_detail::is_indexer(sol::string_detail::string_shim)
   inline int is_indexer(string_detail::string_shim s) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:169:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:179:14: note: candidate: int sol::usertype_detail::is_indexer(sol::meta_function)
   inline int is_indexer(meta_function mf) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:179:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:189:14: note: candidate: int sol::usertype_detail::is_indexer(sol::call_construction)
   inline int is_indexer(call_construction) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:189:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:193:14: note: candidate: int sol::usertype_detail::is_indexer(sol::base_classes_tag)
   inline int is_indexer(base_classes_tag) {
              ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:193:14: note:   no known conversion for argument 1 from ‘std::__tuple_element_t<2ul, std::tuple<const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const}’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:488:4: error: no matching function for call to ‘std::initializer_list<int>::initializer_list(<brace-enclosed initializer list>)’
    (void)detail::swallow{ 0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0) ... };
    ^
In file included from /usr/include/c++/5/bits/range_access.h:36:0,
                 from /usr/include/c++/5/string:51,
                 from /home/kornerr/p/cpp-callback-script/src/Common.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/EnvironmentClient.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/Environment.h:5,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:2:
/usr/include/c++/5/initializer_list:66:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list() [with _E = int]
       constexpr initializer_list() noexcept
                 ^
/usr/include/c++/5/initializer_list:66:17: note:   candidate expects 0 arguments, 2 provided
/usr/include/c++/5/initializer_list:62:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list(std::initializer_list<_E>::const_iterator, std::initializer_list<_E>::size_type) [with _E = int; std::initializer_list<_E>::const_iterator = const int*; std::initializer_list<_E>::size_type = long unsigned int]
       constexpr initializer_list(const_iterator __a, size_type __l)
                 ^
/usr/include/c++/5/initializer_list:62:17: note:   conversion of argument 2 would be ill-formed:
/usr/include/c++/5/initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(const std::initializer_list<int>&)
     class initializer_list
           ^
/usr/include/c++/5/initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/5/initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(std::initializer_list<int>&&)
/usr/include/c++/5/initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [19], void>::caller; Args = {const char (&)[19]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [19], void>::caller; FxArgs = {const char (&)[19]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[19]; Args = {}; F = char [19]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[19]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [19], void>::caller) (const char [19])’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [19]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[19]>((* & args#0))’ (type ‘const char [19]’) to type ‘char (&)[19]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [22], void>::caller; Args = {const char (&)[22]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [22], void>::caller; FxArgs = {const char (&)[22]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[22]; Args = {}; F = char [22]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[22]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [22], void>::caller) (const char [22])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [22]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[22]>((* & args#0))’ (type ‘const char [22]’) to type ‘char (&)[22]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [4], void>::caller; Args = {const char (&)[4]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [4], void>::caller; FxArgs = {const char (&)[4]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[4]; Args = {}; F = char [4]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[4]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [4], void>::caller) (const char [4])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [4]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[4]>((* & args#0))’ (type ‘const char [4]’) to type ‘char (&)[4]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp: In instantiation of ‘static decltype(auto) sol::stack::stack_detail::evaluator::eval(sol::types<>, std::index_sequence<>, lua_State*, int, sol::stack::record&, Fx&&, Args&& ...) [with Fx = sol::wrapper<char [5], void>::caller; Args = {const char (&)[5]}; std::index_sequence<> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:98:5:   required from ‘void sol::stack::stack_detail::call(sol::types<void>, sol::types<Args ...>, std::index_sequence<I ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool checkargs = false; long unsigned int ...I = {}; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; std::index_sequence<I ...> = std::integer_sequence<long unsigned int>; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:122:34:   required from ‘void sol::stack::call(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:142:20:   required from ‘int sol::stack::call_into_lua(sol::types<void>, sol::types<Args ...>, lua_State*, int, Fx&&, FxArgs&& ...) [with bool check_args = false; Args = {}; Fx = sol::wrapper<char [5], void>::caller; FxArgs = {const char (&)[5]}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:187:41:   required from ‘static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, <template-parameter-1-6> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[5]; Args = {}; F = char [5]; bool is_index = true; bool is_variable = true; bool checked = false; int boost = 0; <template-parameter-1-6> = void; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/call.hpp:635:191:   required from ‘int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = EnvironmentClient; bool is_index = true; bool is_variable = true; int boost = 0; Fx = const char (&)[5]; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:672:69:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:45:281:   required from ‘sol::usertype<T>::usertype(sol::usertype_detail::check_destructor_tag, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:53:171:   required from ‘sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; CArgs = {sol::types<>}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:50:254:   required from ‘sol::usertype<T>::usertype(Args&& ...) [with Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; T = EnvironmentClient]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:281:53:   required from ‘sol::basic_table_core<<anonymous>, T>& sol::basic_table_core<<anonymous>, T>::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; bool top_level = true; base_type = sol::reference; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:464:4:   required from ‘sol::state_view& sol::state_view::new_usertype(const string&, Args&& ...) [with Class = EnvironmentClient; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*}; std::__cxx11::string = std::__cxx11::basic_string<char>]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:96:5:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: error: no match for call to ‘(sol::wrapper<char [5], void>::caller) (const char [5])’
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types_core.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function_types.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note: candidate: template<class ... Args> decltype(auto) sol::wrapper<F, <template-parameter-1-2> >::caller::operator()(F&, Args&& ...) const [with Args = {Args ...}; F = char [5]; <template-parameter-1-2> = void]
    decltype(auto) operator()(F& fx, Args&&... args) const {
                   ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/wrapper.hpp:43:19: note:   template argument deduction/substitution failed:
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/unsafe_function.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/function.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/proxy.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack.hpp:72:33: note:   cannot convert ‘std::forward<const char (&)[5]>((* & args#0))’ (type ‘const char [5]’) to type ‘char (&)[5]’
      return std::forward<Fx>(fx)(std::forward<Args>(args)...);
                                 ^
In file included from /home/kornerr/p/cpp-callback-script/../sol2/sol/usertype.hpp:26:0,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table_core.hpp:28,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/table.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state_view.hpp:26,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol/state.hpp:25,
                 from /home/kornerr/p/cpp-callback-script/../sol2/sol.hpp:51,
                 from /home/kornerr/p/cpp-callback-script/src/main.cpp:60:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 2ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 2ul; N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; F = const char (&)[19]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 2ul; N = std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&; F = const char (&)[19]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<std::vector<std::__cxx11::basic_string<char> >(const std::__cxx11::basic_string<char>&, const std::vector<std::__cxx11::basic_string<char> >&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 4ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 4ul; N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; F = const char (&)[22]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 4ul; N = std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&; F = const char (&)[22]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<Vector(const std::__cxx11::basic_string<char>&, const Vector&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 6ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 6ul; N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; F = const char (&)[4]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::* const’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 6ul; N = std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&; F = const char (&)[4]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘std::function<bool(const std::__cxx11::basic_string<char>&)> EnvironmentClient::*’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘int (* sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_func() const)(lua_State*) [with long unsigned int Idx = 8ul; typename std::enable_if<std::integral_constant<bool, (! sol::meta::all<std::is_same<int (*)(lua_State*), std::remove_cv<typename std::remove_reference<typename std::tuple_element<(Idx + 1), typename std::remove_cv<typename std::remove_reference<std::tuple<_Tail ...> >::type>::type>::type>::type> > >::value)>::value, sol::meta::enable_t>::type <anonymous> = (sol::meta::type)0; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:79:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 8ul; N = sol::constructor_list<sol::types<> >&; F = const char (&)[5]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:478:38: error: no matching function for call to ‘make_shim(const sol::constructor_list<sol::types<> >&)’
    return (usertype_detail::make_shim(name) == "__newindex") ? &call<Idx + 1, false> : &call<Idx + 1, true>;
                                      ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘const sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp: In instantiation of ‘luaL_Reg sol::usertype_detail::make_reg(N&&, lua_CFunction) [with N = sol::constructor_list<sol::types<> >&; luaL_Reg = luaL_Reg; lua_CFunction = int (*)(lua_State*); lua_State = lua_State]’:
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:540:44:   required from ‘void sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::make_regs(sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t&, int&, N&&, F&&) [with long unsigned int Idx = 8ul; N = sol::constructor_list<sol::types<> >&; F = const char (&)[5]; <template-parameter-2-4> = void; T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::regs_t = std::array<luaL_Reg, 9ul>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:742:154:   required from ‘static int sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::push(lua_State*, sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t&&) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Args = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State; sol::stack::pusher<sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...> >::umt_t = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/stack_core.hpp:185:99:   required from ‘int sol::stack::push(lua_State*, T&&, Args&& ...) [with T = sol::usertype_metatable<EnvironmentClient, std::integer_sequence<long unsigned int, 0ul, 1ul, 2ul, 3ul, 4ul>, const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; Args = {}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:694:22:   required from ‘int sol::usertype_metatable<T, std::integer_sequence<long unsigned int, I ...>, Tn ...>::push_um(lua_State*) [with T = EnvironmentClient; long unsigned int ...I = {0ul, 1ul, 2ul, 3ul, 4ul}; Tn = {const char (&)[13], sol::property_wrapper<void, runSol(const char*)::<lambda(EnvironmentClient&, sol::function)> >, std::function<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)> EnvironmentClient::*, const char (&)[19], std::function<Vector(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const Vector&)> EnvironmentClient::*, const char (&)[22], std::function<bool(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> EnvironmentClient::*, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; lua_State = lua_State]’
/home/kornerr/p/cpp-callback-script/src/main.cpp:127:1:   required from here
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:221:25: error: no matching function for call to ‘make_shim(sol::constructor_list<sol::types<> >&)’
    luaL_Reg l{ make_shim(std::forward<N>(n)).data(), f };
                         ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note: candidate: auto sol::usertype_detail::make_shim(sol::string_detail::string_shim)
   inline auto make_shim(string_detail::string_shim s) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:197:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::string_detail::string_shim’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note: candidate: auto sol::usertype_detail::make_shim(sol::call_construction)
   inline auto make_shim(call_construction) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:201:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::call_construction’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note: candidate: auto sol::usertype_detail::make_shim(sol::meta_function)
   inline auto make_shim(meta_function mf) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:205:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::meta_function’
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note: candidate: auto sol::usertype_detail::make_shim(sol::base_classes_tag)
   inline auto make_shim(base_classes_tag) {
               ^
/home/kornerr/p/cpp-callback-script/../sol2/sol/usertype_metatable.hpp:209:15: note:   no known conversion for argument 1 from ‘sol::constructor_list<sol::types<> >’ to ‘sol::base_classes_tag {aka sol::base_list<>}’
CMakeFiles/cpp-callback-script.dir/build.make:62: recipe for target 'CMakeFiles/cpp-callback-script.dir/src/main.cpp.o' failed
make[2]: *** [CMakeFiles/cpp-callback-script.dir/src/main.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/cpp-callback-script.dir/all' failed
make[1]: *** [CMakeFiles/cpp-callback-script.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 4, 2017

Owner

Try replacing sol::nested with sol::as_table_t, and it should probably work.

Owner

ThePhD commented Aug 4, 2017

Try replacing sol::nested with sol::as_table_t, and it should probably work.

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 4, 2017

sol::as_table_t<Strings> result = callback(key, values) doesn't work.

I have also tried to cut it down to

        "callbackCall",
        sol::property(
            [](EnvironmentClient &ec, sol::function callback)
            {
                ec.callbackCall =
                    [=](const String &key, const Strings &values) -> Strings
                    {
                        //sol::as_table_t<Strings> result = callback(key, values);
                        //return std::move(result.source);
                        Strings stub;
                        return stub;
                    };
            }),

but I get other template errors.

Can you please have a look? I can't grasp all the template magic that Sol2 does.

kornerr commented Aug 4, 2017

sol::as_table_t<Strings> result = callback(key, values) doesn't work.

I have also tried to cut it down to

        "callbackCall",
        sol::property(
            [](EnvironmentClient &ec, sol::function callback)
            {
                ec.callbackCall =
                    [=](const String &key, const Strings &values) -> Strings
                    {
                        //sol::as_table_t<Strings> result = callback(key, values);
                        //return std::move(result.source);
                        Strings stub;
                        return stub;
                    };
            }),

but I get other template errors.

Can you please have a look? I can't grasp all the template magic that Sol2 does.

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 6, 2017

Owner

Using the latest sol2 and that branch you gave me, this compiles:

lua.new_usertype<EnvironmentClient>(
        "EnvironmentClient",
	    "callbackCall", sol::property([](EnvironmentClient& ec, sol::function lua_callback) {
			ec.callbackCall = [=](const String& key, const Strings& values) -> Strings {
				sol::nested<Strings> return_value = lua_callback(key, sol::as_table(values));
				return std::move(return_value.source);
			};
		}),
        "callbackRespondsToKey", &EnvironmentClient::callbackRespondsToKey
    );

I cannot run it because it requires pthreads.lib, dl.lib, and a few other things I don't have access to. But, I can at least confirm that builds right proper.

Owner

ThePhD commented Aug 6, 2017

Using the latest sol2 and that branch you gave me, this compiles:

lua.new_usertype<EnvironmentClient>(
        "EnvironmentClient",
	    "callbackCall", sol::property([](EnvironmentClient& ec, sol::function lua_callback) {
			ec.callbackCall = [=](const String& key, const Strings& values) -> Strings {
				sol::nested<Strings> return_value = lua_callback(key, sol::as_table(values));
				return std::move(return_value.source);
			};
		}),
        "callbackRespondsToKey", &EnvironmentClient::callbackRespondsToKey
    );

I cannot run it because it requires pthreads.lib, dl.lib, and a few other things I don't have access to. But, I can at least confirm that builds right proper.

@ThePhD ThePhD closed this Aug 6, 2017

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 7, 2017

Very strange, but it doesn't build for me.
I will refactor the sample to only have that specific feature and then report back.

Just in case that matters, I'm running Xubuntu 16.04 LTS and GCC 5.4.0.

kornerr commented Aug 7, 2017

Very strange, but it doesn't build for me.
I will refactor the sample to only have that specific feature and then report back.

Just in case that matters, I'm running Xubuntu 16.04 LTS and GCC 5.4.0.

@ThePhD

This comment has been minimized.

Show comment
Hide comment
@ThePhD

ThePhD Aug 7, 2017

Owner

Pull from the latest of grab the latest single to make sure you're up to date. I had to add a lot of fixes and other things to get it to work: https://github.com/ThePhD/sol2/blob/develop/single/sol/sol.hpp

Owner

ThePhD commented Aug 7, 2017

Pull from the latest of grab the latest single to make sure you're up to date. I had to add a lot of fixes and other things to get it to work: https://github.com/ThePhD/sol2/blob/develop/single/sol/sol.hpp

@kornerr

This comment has been minimized.

Show comment
Hide comment
@kornerr

kornerr Aug 7, 2017

I've refactored the sample into this: https://github.com/kornerr/lua-sol-vector
I can verify everything builds and runs just fine, thanks!

However, now I have a question.

Here's the result of running the lua-sol-vector sample:

----    Inside callback ----
table: 0x1508240
        1       ->      A
        2       ->      B
----    Running the callback    ----
sol.std::vector<std::__cxx11::basic_string<char> >: 0x1513d38
        1       ->      Z
        2       ->      A

As you can see, the types inside the callback and the one returned are different. Can you please elaborate on this?

kornerr commented Aug 7, 2017

I've refactored the sample into this: https://github.com/kornerr/lua-sol-vector
I can verify everything builds and runs just fine, thanks!

However, now I have a question.

Here's the result of running the lua-sol-vector sample:

----    Inside callback ----
table: 0x1508240
        1       ->      A
        2       ->      B
----    Running the callback    ----
sol.std::vector<std::__cxx11::basic_string<char> >: 0x1513d38
        1       ->      Z
        2       ->      A

As you can see, the types inside the callback and the one returned are different. Can you please elaborate on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment