Skip to content

Commit

Permalink
Callback: allow generic lambda again, cleaner way of detecting empty …
Browse files Browse the repository at this point in the history
…parameters lambda
  • Loading branch information
JonathSpirit committed Sep 27, 2024
1 parent afb98aa commit 0afe2cb
Showing 1 changed file with 1 addition and 19 deletions.
20 changes: 1 addition & 19 deletions includes/FastEngine/C_callback.inl
Original file line number Diff line number Diff line change
Expand Up @@ -59,31 +59,13 @@ bool CallbackObjectFunctor<TObject, Types...>::check(void* ptr)

//CallbackLambda

namespace
{

template<typename T>
struct lambda_traits : public lambda_traits<decltype(&T::operator())>
{};

template<typename ClassType, typename ReturnType, typename... Args>
struct lambda_traits<ReturnType (ClassType::*)(Args...) const>
{
enum : std::size_t
{
ArgCount = sizeof...(Args)
};
};

} // namespace

template<class... Types>
template<typename TLambda>
CallbackLambda<Types...>::CallbackLambda(TLambda const& lambda) :
g_lambda(new TLambda(lambda))
{
this->g_executeLambda = [](void* lambdaPtr, [[maybe_unused]] Types... arguments) {
if constexpr (lambda_traits<TLambda>::ArgCount != 0)
if constexpr (std::is_invocable_v<TLambda, Types...>)
{
return (*reinterpret_cast<TLambda*>(lambdaPtr))(arguments...);
}
Expand Down

0 comments on commit 0afe2cb

Please sign in to comment.