summaryrefslogtreecommitdiff
path: root/asl/base/functional_tests.cpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2025-02-26 20:01:45 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2025-02-26 20:01:45 +0100
commit38ab48b1882f36ed7eb7e50c4fb46ce5d376fbc3 (patch)
tree63da65e8137f8f075ab33776d2a812bb31d86845 /asl/base/functional_tests.cpp
parent8034ce643d36e8cbe4c4d6bc9e154aaf2eb08597 (diff)
Fix some deducing-this & functional stuff, add invocable concept
Diffstat (limited to 'asl/base/functional_tests.cpp')
-rw-r--r--asl/base/functional_tests.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/asl/base/functional_tests.cpp b/asl/base/functional_tests.cpp
index 92c5c7b..991c3c1 100644
--- a/asl/base/functional_tests.cpp
+++ b/asl/base/functional_tests.cpp
@@ -24,11 +24,25 @@ static int some_func1(int x) { return x + 1; }
[[maybe_unused]] static float some_func1(float x) { return x + 1; }
static int some_func2(int x, int b) { return x + b; }
-static_assert(asl::same_as<asl::result_of_t<Functor()>, int64_t>);
-static_assert(asl::same_as<asl::result_of_t<Functor(int)>, int>);
-static_assert(asl::same_as<asl::result_of_t<decltype(static_cast<float(*)(float)>(some_func1))(float)>, float>);
-static_assert(asl::same_as<asl::result_of_t<decltype(&HasFunction::do_something)(HasFunction, int, float)>, void>);
-static_assert(asl::same_as<asl::result_of_t<decltype(&HasMember::member)(HasMember)>, int>);
+static_assert(asl::same_as<asl::invoke_result_t<int()>, int>);
+static_assert(asl::same_as<asl::invoke_result_t<int(float), float>, int>);
+static_assert(asl::same_as<asl::invoke_result_t<Functor>, int64_t>);
+static_assert(asl::same_as<asl::invoke_result_t<Functor, int>, int>);
+static_assert(asl::same_as<asl::invoke_result_t<decltype(static_cast<float(*)(float)>(some_func1)), float>, float>);
+static_assert(asl::same_as<asl::invoke_result_t<decltype(&HasFunction::do_something), HasFunction, int, float>, void>);
+static_assert(asl::same_as<asl::invoke_result_t<decltype(&HasMember::member), const HasMember>, const int&>);
+
+static_assert(asl::invocable<int()>);
+static_assert(!asl::invocable<int(), int>);
+static_assert(asl::invocable<int(float), float>);
+static_assert(!asl::invocable<int(float), int*>);
+static_assert(asl::invocable<Functor>);
+static_assert(asl::invocable<Functor, int>);
+static_assert(!asl::invocable<Functor, void*>);
+static_assert(asl::invocable<decltype(static_cast<float(*)(float)>(some_func1)), float>);
+static_assert(asl::invocable<decltype(&HasFunction::do_something), HasFunction, int, float>);
+static_assert(!asl::invocable<decltype(&HasFunction::do_something), HasFunction, int, int*>);
+static_assert(asl::invocable<decltype(&HasMember::member), const HasMember>);
ASL_TEST(invoke_member_function)
{