| 14444 | |
| 14445 | template <bool checkargs = detail::default_safe_function_calls , std::size_t... I, typename R, typename... Args, typename Fx, typename... FxArgs> |
| 14446 | inline decltype(auto) call(types<R>, types<Args...> ta, std::index_sequence<I...> tai, lua_State* L, int start, Fx&& fx, FxArgs&&... args) { |
| 14447 | static_assert(meta::all<meta::is_not_move_only<Args>...>::value, "One of the arguments being bound is a move-only type, and it is not being taken by reference: this will break your code. Please take a reference and std::move it manually if this was your intention."); |
| 14448 | if constexpr (checkargs) { |
| 14449 | argument_handler<types<R, Args...>> handler{}; |
| 14450 | multi_check<Args...>(L, start, handler); |
| 14451 | } |
| 14452 | record tracking{}; |
| 14453 | if constexpr (std::is_void_v<R>) { |
| 14454 | eval(ta, tai, L, start, tracking, std::forward<Fx>(fx), std::forward<FxArgs>(args)...); |
| 14455 | } |
| 14456 | else { |
| 14457 | return eval(ta, tai, L, start, tracking, std::forward<Fx>(fx), std::forward<FxArgs>(args)...); |
| 14458 | } |
| 14459 | } |
| 14460 | } // namespace stack_detail |
| 14461 | |
| 14462 | template <typename T> |
no test coverage detected