Skip to content

Doesn't build with Clang 18.1.0 #1581

@checkraisefold

Description

@checkraisefold

On the latest major release (candidate) of Clang, sol2 flat out doesn't compile with a fatal error and spits out a bunch of warnings.
https://github.com/jpxs-intl/RosaServer/actions/runs/7929791195/job/21650728959 for the run logs, or here:

/home/runner/work/RosaServer/RosaServer/sol2/include/sol/function_types.hpp:110:31: fatal error: address of overloaded function 'call' does not match required type 'int (lua_State *)'
  110 |                                 lua_CFunction freefunc = &function_detail::upvalue_this_member_variable<C, Fx>::template call<is_yielding, no_trampoline>;
      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/function_types.hpp:268:5: note: in instantiation of function template specialization 'sol::function_detail::select_member_variable<false, false, float Vector::*>' requested here
  268 |                                 select_member_variable<is_yielding, no_trampoline>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
      |                                 ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/function_types.hpp:392:22: note: in instantiation of function template specialization 'sol::function_detail::select<false, false, float Vector::*>' requested here
  392 |                                 function_detail::select<false, false>(L, std::forward<Args>(args)...);
      |                                                  ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/stack_core.hpp:878:14: note: in instantiation of function template specialization 'sol::stack::unqualified_pusher<float Vector::*>::push<float Vector::*>' requested here
  878 |                                 return p.push(L, std::forward<T>(t), std::forward<Args>(args)...);
      |                                          ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/stack_field.hpp:222:7: note: in instantiation of function template specialization 'sol::stack::push<float Vector::*>' requested here
  222 |                                                 push(L, std::forward<Value>(value));
      |                                                 ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/stack_core.hpp:1250:59: note: in instantiation of function template specialization 'sol::stack::field_setter<const char *>::set<const char *, float Vector::*>' requested here
 1250 |                         field_setter<meta::unqualified_t<Key>, global, raw> {}.set(L, std::forward<Key>(key), std::forward<Value>(value), tableindex);
      |                                                                                ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/table_core.hpp:264:14: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
  264 |                                                 stack::set_field<global, raw>(L, std::forward<Key>(key), std::forward<Keys>(keys)..., table_index);
      |                                                        ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/usertype.hpp:100:20: note: in instantiation of function template specialization 'sol::basic_table_core<false, sol::basic_reference<false>>::set<const char *, float Vector::*>' requested here
  100 |                                         table_base_t::set(std::forward<Key>(key), std::forward<Value>(value));
      |                                                       ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/usertype_proxy.hpp:64:9: note: in instantiation of function template specialization 'sol::basic_usertype<Vector, sol::basic_reference<false>>::set<const char *, float Vector::*>' requested here
   64 |                                 tbl.set(std::get<I>(std::move(key))..., std::forward<T>(value));
      |                                     ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/usertype_proxy.hpp:86:21: note: in instantiation of function template specialization 'sol::usertype_proxy<sol::basic_usertype<Vector, sol::basic_reference<false>> &, const char *>::tuple_set<0UL, float Vector::*>' requested here
   86 |                         std::move(*this).tuple_set(idx_seq(), std::forward<T>(item));
      |                                          ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/usertype_proxy.hpp:97:28: note: in instantiation of function template specialization 'sol::usertype_proxy<sol::basic_usertype<Vector, sol::basic_reference<false>> &, const char *>::set<float Vector::*>' requested here
   97 |                         return std::move(*this).set(std::forward<T>(other));
      |                                                 ^
/home/runner/work/RosaServer/RosaServer/RosaServer/rosaserver.cpp:87:13: note: in instantiation of function template specialization 'sol::usertype_proxy<sol::basic_usertype<Vector, sol::basic_reference<false>> &, const char *>::operator=<float Vector::*>' requested here
   87 |                 meta["x"] = &Vector::x;
      |                           ^
/home/runner/work/RosaServer/RosaServer/sol2/include/sol/function_types_stateless.hpp:323:14: note: candidate template ignored: substitution failure [with is_yielding = false, no_trampoline = false]
  323 |                 static int call(lua_State* L) noexcept(std::is_nothrow_copy_assignable_v<T>) {
      |                            ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions