From f19d93a69a0ec5c7a89dcb4c064c984aac90ba71 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 26 Mar 2025 18:54:54 +0100 Subject: Improve implementation of invoke --- asl/base/functional_tests.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'asl/base/functional_tests.cpp') diff --git a/asl/base/functional_tests.cpp b/asl/base/functional_tests.cpp index 5e7b052..6332784 100644 --- a/asl/base/functional_tests.cpp +++ b/asl/base/functional_tests.cpp @@ -7,9 +7,12 @@ struct HasFunction { - void do_something(int, float) {} + void do_something(int, float) const {} + int& do_something2(int, float) &; }; +struct HasFunction2 : public HasFunction {}; + struct HasMember { int member{}; @@ -17,6 +20,8 @@ struct HasMember void (*member_fn)(){}; }; +struct HasMember2 : public HasMember {}; + struct Functor { int64_t operator()() { return 35; } @@ -34,7 +39,13 @@ static_assert(asl::same_as, int64_t>); static_assert(asl::same_as, int>); static_assert(asl::same_as(some_func1)), float>, float>); static_assert(asl::same_as, void>); -static_assert(asl::same_as, const int&>); +static_assert(asl::same_as, void>); +static_assert(asl::same_as, void>); +static_assert(asl::same_as, int&>); +static_assert(asl::same_as, int&>); +static_assert(asl::same_as, int&&>); +static_assert(asl::same_as, const int&>); +static_assert(asl::same_as, const int&>); static_assert(asl::invocable); static_assert(!asl::invocable); @@ -45,8 +56,17 @@ static_assert(asl::invocable); static_assert(!asl::invocable); static_assert(asl::invocable(some_func1)), float>); static_assert(asl::invocable); +static_assert(asl::invocable); +static_assert(asl::invocable); static_assert(!asl::invocable); -static_assert(asl::invocable); +static_assert(!asl::invocable); +static_assert(!asl::invocable); +static_assert(asl::invocable); +static_assert(asl::invocable); +static_assert(!asl::invocable); +static_assert(asl::invocable); +static_assert(asl::invocable); +static_assert(asl::invocable); ASL_TEST(invoke_member_function) { -- cgit