From a141c401f78467bc15f62882fca5d55a007cacbb Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Mon, 17 Feb 2025 00:21:48 +0100 Subject: Reorganize everything --- asl/functional.hpp | 65 ------------------------------------------------------ 1 file changed, 65 deletions(-) delete mode 100644 asl/functional.hpp (limited to 'asl/functional.hpp') diff --git a/asl/functional.hpp b/asl/functional.hpp deleted file mode 100644 index f5ff0d9..0000000 --- a/asl/functional.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#include "asl/meta.hpp" -#include "asl/utility.hpp" - -namespace asl { - -template -constexpr auto invoke(is_func auto C::* f, auto&& self, Args&&... args) - requires requires { - (self.*f)(ASL_FWD(args)...); - } -{ - return (ASL_FWD(self).*f)(ASL_FWD(args)...); -} - -template -constexpr auto invoke(is_func auto C::* f, auto* self, Args&&... args) - requires requires { - (self->*f)(ASL_FWD(args)...); - } -{ - return (self->*f)(ASL_FWD(args)...); -} - -template -constexpr auto invoke(is_object auto C::* m, auto&& self, Args&&...) - requires ( - sizeof...(Args) == 0 && - requires { self.*m; } - ) -{ - return ASL_FWD(self).*m; -} - -template -constexpr auto invoke(is_object auto C::* m, auto* self, Args&&...) - requires ( - sizeof...(Args) == 0 && - requires { self->*m; } - ) -{ - return self->*m; -} - -template -constexpr auto invoke(auto&& f, Args&&... args) - requires requires { - f(ASL_FWD(args)...); - } -{ - return ASL_FWD(f)(ASL_FWD(args)...); -} - -template struct _result_of_helper; - -template -struct _result_of_helper -{ - using type = decltype(invoke(declval(), declval()...)); -}; - -template using result_of_t = _result_of_helper::type; - -} // namespace asl -- cgit