summaryrefslogtreecommitdiff
path: root/asl/functional.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/functional.hpp')
-rw-r--r--asl/functional.hpp130
1 files changed, 65 insertions, 65 deletions
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<typename... Args, typename C>
-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<typename... Args, typename C>
-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<typename... Args, typename C>
-constexpr auto invoke(is_object auto C::* m, auto&& self, Args&&...)
- requires (
- sizeof...(Args) == 0 &&
- requires { self.*m; }
- )
-{
- return ASL_FWD(self).*m;
-}
-
-template<typename... Args, typename C>
-constexpr auto invoke(is_object auto C::* m, auto* self, Args&&...)
- requires (
- sizeof...(Args) == 0 &&
- requires { self->*m; }
- )
-{
- return self->*m;
-}
-
-template<typename... Args>
-constexpr auto invoke(auto&& f, Args&&... args)
- requires requires {
- f(ASL_FWD(args)...);
- }
-{
- return ASL_FWD(f)(ASL_FWD(args)...);
-}
-
-template<typename F> struct _result_of_helper;
-
-template<typename R, typename... Args>
-struct _result_of_helper<R(Args...)>
-{
- using type = decltype(invoke(declval<R>(), declval<Args>()...));
-};
-
-template<typename F> using result_of_t = _result_of_helper<F>::type;
-
-} // namespace asl
+#pragma once
+
+#include "asl/meta.hpp"
+#include "asl/utility.hpp"
+
+namespace asl {
+
+template<typename... Args, typename C>
+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<typename... Args, typename C>
+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<typename... Args, typename C>
+constexpr auto invoke(is_object auto C::* m, auto&& self, Args&&...)
+ requires (
+ sizeof...(Args) == 0 &&
+ requires { self.*m; }
+ )
+{
+ return ASL_FWD(self).*m;
+}
+
+template<typename... Args, typename C>
+constexpr auto invoke(is_object auto C::* m, auto* self, Args&&...)
+ requires (
+ sizeof...(Args) == 0 &&
+ requires { self->*m; }
+ )
+{
+ return self->*m;
+}
+
+template<typename... Args>
+constexpr auto invoke(auto&& f, Args&&... args)
+ requires requires {
+ f(ASL_FWD(args)...);
+ }
+{
+ return ASL_FWD(f)(ASL_FWD(args)...);
+}
+
+template<typename F> struct _result_of_helper;
+
+template<typename R, typename... Args>
+struct _result_of_helper<R(Args...)>
+{
+ using type = decltype(invoke(declval<R>(), declval<Args>()...));
+};
+
+template<typename F> using result_of_t = _result_of_helper<F>::type;
+
+} // namespace asl