From cf7db48c261ee9c896c813a38ff8c59da5b8fe07 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sun, 26 Jan 2025 00:40:51 +0100 Subject: Fix line endings --- asl/functional.hpp | 130 ++++++++++++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 65 deletions(-) (limited to 'asl/functional.hpp') diff --git a/asl/functional.hpp b/asl/functional.hpp index 967a2a2..f5ff0d9 100644 --- a/asl/functional.hpp +++ b/asl/functional.hpp @@ -1,65 +1,65 @@ -#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 +#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