ThePhD / sol2

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

A bunch of errors when using usertypes #1589

Closed gamemake-eng closed 3 months ago

gamemake-eng commented 3 months ago

Using G++ with sublime text

When using usertypes I get a bunch of undefined errors when compiling. They only pop up when defining usertypes.

here is a reproduction of it

#define SOL_ALL_SAFETIES_ON 1
#include <stdio.h>
#include <string>
#include <vector>
#include "include/sol.hpp"
struct Test1
{
public:
    Test1(int cards)
    {
          printf("%i", cards);
    }
}

struct Test2
{
public:
    Test2()
    {

    }
    void taxEvasion(int money)
    {
         printf("%i dollars stolen from the goverment", money);
    }
}

int main(int argc, char* args[])
{

    sol::state lua;
    lua.open_libraries(sol::lib::base, sol::lib::coroutine, sol::lib::string, sol::lib::io, sol::lib::math);
    sol::usertype<Test1> testType = lua.new_usertype<Test1>("Depression", sol::constructors<Test1(int)>());
    sol::usertype<Test2> GameType = lua.new_usertype<Test2>("Crime",
    "TaxEvade",&Test2::taxEvasion);

    lua.script_file("main.lua");

    return 0;
}

here is the console log

g++ -Wall -std=c++17 -Iinclude -Iengine   -c -o main.o main.cpp
In file included from main.cpp:5:0:
include/sol.hpp: In instantiation of 'std::__cxx11::string sol::usertype_detail::make_string(Arg&&) [with Arg = sol::state_view&; std::__cxx11::string = std::__cxx11::basic_string<char>]':
include/sol.hpp:18862:168:   required from 'sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = App; unsigned int ...I = {0u}; Tn = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}]'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\unique_ptr.h:791:30:   required from 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&>; _Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&>, std::default_delete<sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&> > >]'
include/sol.hpp:19814:118:   required from 'sol::usertype<T>::usertype(sol::detail::verified_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = App]'
include/sol.hpp:19820:87:   required from 'sol::usertype<T>::usertype(sol::detail::add_destructor_tag, Args&& ...) [with Args = {sol::state_view&}; T = App]'
include/sol.hpp:19825:190:   required from 'sol::usertype<T>::usertype(sol::detail::check_destructor_tag, Args&& ...) [with Args = {sol::state_view&}; T = App]'
include/sol.hpp:19831:211:   required from 'sol::usertype<T>::usertype(Args&& ...) [with Args = {sol::state_view&}; T = App]'
main.cpp:14:119:   required from here
include/sol.hpp:18515:36: error: no matching function for call to 'make_string_view(sol::state_view&)'
    string_view s = make_string_view(arg);
                    ~~~~~~~~~~~~~~~~^~~~~
include/sol.hpp:18497:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::string_view)
   inline auto make_string_view(string_view s) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18497:15: note:   no known conversion for argument 1 from 'sol::state_view' to 'sol::string_view {aka sol::basic_string_view<char>}'
include/sol.hpp:18501:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::call_construction)
   inline auto make_string_view(call_construction) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18501:15: note:   no known conversion for argument 1 from 'sol::state_view' to 'sol::call_construction'
include/sol.hpp:18505:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::meta_function)
   inline auto make_string_view(meta_function mf) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18505:15: note:   no known conversion for argument 1 from 'sol::state_view' to 'sol::meta_function'
include/sol.hpp:18509:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::base_classes_tag)
   inline auto make_string_view(base_classes_tag) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18509:15: note:   no known conversion for argument 1 from 'sol::state_view' to 'sol::base_classes_tag {aka sol::base_list<>}'
include/sol.hpp: In instantiation of 'bool sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::contains_index() const [with T = App; unsigned int ...I = {0u}; Tn = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}]':
include/sol.hpp:18869:59:   required from 'sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = App; unsigned int ...I = {0u}; Tn = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}]'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\unique_ptr.h:791:30:   required from 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&>; _Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&>, std::default_delete<sol::usertype_metatable<App, std::integer_sequence<unsigned int, 0u>, sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&> > >]'
include/sol.hpp:19814:118:   required from 'sol::usertype<T>::usertype(sol::detail::verified_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = App]'
include/sol.hpp:19820:87:   required from 'sol::usertype<T>::usertype(sol::detail::add_destructor_tag, Args&& ...) [with Args = {sol::state_view&}; T = App]'
include/sol.hpp:19825:190:   required from 'sol::usertype<T>::usertype(sol::detail::check_destructor_tag, Args&& ...) [with Args = {sol::state_view&}; T = App]'
include/sol.hpp:19831:211:   required from 'sol::usertype<T>::usertype(Args&& ...) [with Args = {sol::state_view&}; T = App]'
main.cpp:14:119:   required from here
include/sol.hpp:18770:66: error: no matching function for call to 'is_indexer(std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[5], sol::destructor_wrapper<void> > >&)'
    (void)detail::swallow{0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0)...};
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/sol.hpp:18469:14: note: candidate: int sol::usertype_detail::is_indexer(sol::string_view)
   inline int is_indexer(string_view s) {
              ^~~~~~~~~~
include/sol.hpp:18469:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::string_view {aka sol::basic_string_view<char>}'
include/sol.hpp:18479:14: note: candidate: int sol::usertype_detail::is_indexer(sol::meta_function)
   inline int is_indexer(meta_function mf) {
              ^~~~~~~~~~
include/sol.hpp:18479:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::meta_function'
include/sol.hpp:18489:14: note: candidate: int sol::usertype_detail::is_indexer(sol::call_construction)
   inline int is_indexer(call_construction) {
              ^~~~~~~~~~
include/sol.hpp:18489:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::call_construction'
include/sol.hpp:18493:14: note: candidate: int sol::usertype_detail::is_indexer(sol::base_classes_tag)
   inline int is_indexer(base_classes_tag) {
              ^~~~~~~~~~
include/sol.hpp:18493:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::base_classes_tag {aka sol::base_list<>}'
include/sol.hpp:18770: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 c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\range_access.h:36:0,
                 from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\string:51,
                 from main.cpp:3:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:66:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list() [with _E = int]
       constexpr initializer_list() noexcept
                 ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:66:17: note:   candidate expects 0 arguments, 2 provided
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\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 = unsigned int]
       constexpr initializer_list(const_iterator __a, size_type __l)
                 ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:62:17: note:   conversion of argument 2 would be ill-formed:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(const std::initializer_list<int>&)
     class initializer_list
           ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(std::initializer_list<int>&&)
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
In file included from main.cpp:5:0:
include/sol.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>]':
include/sol.hpp:18862:168:   required from 'sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = Game; unsigned int ...I = {0u, 1u}; Tn = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\unique_ptr.h:791:30:   required from 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; _Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>, std::default_delete<sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&> > >]'
include/sol.hpp:19814:118:   required from 'sol::usertype<T>::usertype(sol::detail::verified_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = Game]'
include/sol.hpp:19820:87:   required from 'sol::usertype<T>::usertype(sol::detail::add_destructor_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = Game]'
include/sol.hpp:19825:190:   required from 'sol::usertype<T>::usertype(sol::detail::check_destructor_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = Game]'
include/sol.hpp:19836:97:   required from 'sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {sol::state_view&}; CArgs = {sol::types<>}; T = Game]'
include/sol.hpp:19831:211:   required from 'sol::usertype<T>::usertype(Args&& ...) [with Args = {sol::state_view&}; T = Game]'
main.cpp:18:23:   required from here
include/sol.hpp:18515:36: error: no matching function for call to 'make_string_view(sol::constructor_list<sol::types<> >&)'
    string_view s = make_string_view(arg);
                    ~~~~~~~~~~~~~~~~^~~~~
include/sol.hpp:18497:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::string_view)
   inline auto make_string_view(string_view s) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18497:15: note:   no known conversion for argument 1 from 'sol::constructor_list<sol::types<> >' to 'sol::string_view {aka sol::basic_string_view<char>}'
include/sol.hpp:18501:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::call_construction)
   inline auto make_string_view(call_construction) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18501:15: note:   no known conversion for argument 1 from 'sol::constructor_list<sol::types<> >' to 'sol::call_construction'
include/sol.hpp:18505:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::meta_function)
   inline auto make_string_view(meta_function mf) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18505:15: note:   no known conversion for argument 1 from 'sol::constructor_list<sol::types<> >' to 'sol::meta_function'
include/sol.hpp:18509:15: note: candidate: auto sol::usertype_detail::make_string_view(sol::base_classes_tag)
   inline auto make_string_view(base_classes_tag) {
               ^~~~~~~~~~~~~~~~
include/sol.hpp:18509:15: note:   no known conversion for argument 1 from 'sol::constructor_list<sol::types<> >' to 'sol::base_classes_tag {aka sol::base_list<>}'
include/sol.hpp: In instantiation of 'bool sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::contains_index() const [with T = Game; unsigned int ...I = {0u, 1u}; Tn = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]':
include/sol.hpp:18869:59:   required from 'sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...>::usertype_metatable(Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; <template-parameter-2-2> = void; T = Game; unsigned int ...I = {0u, 1u}; Tn = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}]'
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\unique_ptr.h:791:30:   required from 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>; _Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&>, std::default_delete<sol::usertype_metatable<Game, std::integer_sequence<unsigned int, 0u, 1u>, sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&> > >]'
include/sol.hpp:19814:118:   required from 'sol::usertype<T>::usertype(sol::detail::verified_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&, const char (&)[5], const sol::destructor_wrapper<void>&}; T = Game]'
include/sol.hpp:19820:87:   required from 'sol::usertype<T>::usertype(sol::detail::add_destructor_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = Game]'
include/sol.hpp:19825:190:   required from 'sol::usertype<T>::usertype(sol::detail::check_destructor_tag, Args&& ...) [with Args = {sol::state_view&, const char (&)[4], sol::constructor_list<sol::types<> >&}; T = Game]'
include/sol.hpp:19836:97:   required from 'sol::usertype<T>::usertype(sol::constructor_list<Lists ...>, Args&& ...) [with Args = {sol::state_view&}; CArgs = {sol::types<>}; T = Game]'
include/sol.hpp:19831:211:   required from 'sol::usertype<T>::usertype(Args&& ...) [with Args = {sol::state_view&}; T = Game]'
main.cpp:18:23:   required from here
include/sol.hpp:18770:66: error: no matching function for call to 'is_indexer(std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > >&)'
    (void)detail::swallow{0, ((idx |= (usertype_detail::is_indexer(std::get<I * 2>(functions)) != 0)), 0)...};
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/sol.hpp:18469:14: note: candidate: int sol::usertype_detail::is_indexer(sol::string_view)
   inline int is_indexer(string_view s) {
              ^~~~~~~~~~
include/sol.hpp:18469:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::string_view {aka sol::basic_string_view<char>}'
include/sol.hpp:18479:14: note: candidate: int sol::usertype_detail::is_indexer(sol::meta_function)
   inline int is_indexer(meta_function mf) {
              ^~~~~~~~~~
include/sol.hpp:18479:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::meta_function'
include/sol.hpp:18489:14: note: candidate: int sol::usertype_detail::is_indexer(sol::call_construction)
   inline int is_indexer(call_construction) {
              ^~~~~~~~~~
include/sol.hpp:18489:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::call_construction'
include/sol.hpp:18493:14: note: candidate: int sol::usertype_detail::is_indexer(sol::base_classes_tag)
   inline int is_indexer(base_classes_tag) {
              ^~~~~~~~~~
include/sol.hpp:18493:14: note:   no known conversion for argument 1 from 'std::__tuple_element_t<0u, std::tuple<sol::state_view, const char (&)[4], sol::constructor_list<sol::types<> >, const char (&)[5], sol::destructor_wrapper<void> > > {aka const sol::state_view}' to 'sol::base_classes_tag {aka sol::base_list<>}'
include/sol.hpp:18770: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 c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\range_access.h:36:0,
                 from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\string:51,
                 from main.cpp:3:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:66:17: note: candidate: constexpr std::initializer_list<_E>::initializer_list() [with _E = int]
       constexpr initializer_list() noexcept
                 ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:66:17: note:   candidate expects 0 arguments, 2 provided
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\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 = unsigned int]
       constexpr initializer_list(const_iterator __a, size_type __l)
                 ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:62:17: note:   conversion of argument 2 would be ill-formed:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(const std::initializer_list<int>&)
     class initializer_list
           ^~~~~~~~~~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note: candidate: constexpr std::initializer_list<int>::initializer_list(std::initializer_list<int>&&)
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\initializer_list:47:11: note:   candidate expects 1 argument, 2 provided
In file included from main.cpp:5:0:
include/sol.hpp: In instantiation of 'static int sol::call_detail::agnostic_lua_call_wrapper<F, is_index, is_variable, checked, boost, clean_stack, <template-parameter-1-7> >::call(lua_State*, Fx&&, Args&& ...) [with Fx = const char (&)[5]; Args = {}; F = char [5]; bool is_index = true; bool is_variable = true; bool checked = true; int boost = 0; bool clean_stack = true; <template-parameter-1-7> = void; lua_State = lua_State]':
include/sol.hpp:13730:167:   required from 'int sol::call_detail::call_wrapped(lua_State*, Fx&&, Args&& ...) [with T = App; bool is_index = true; bool is_variable = true; int boost = 0; bool checked = true; bool clean_stack = true; Fx = const char (&)[5]; Args = {}; lua_State = lua_State]'
include/sol.hpp:18977:69:   required from 'static int sol::usertype_metatable<T, std::integer_sequence<unsigned int, I ...>, Tn ...
gamemake-eng commented 3 months ago

Turns out all i needed to do was to not put them inside variables.