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/meta.hpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'asl/base/meta.hpp') diff --git a/asl/base/meta.hpp b/asl/base/meta.hpp index b17f05c..1d57367 100644 --- a/asl/base/meta.hpp +++ b/asl/base/meta.hpp @@ -92,12 +92,6 @@ template concept trivially_destructible = __is_trivially_destructibl template concept copyable = copy_constructible && copy_assignable; template concept moveable = move_constructible && move_assignable; -template -concept convertible_to = __is_convertible(From, To); - -template -concept derived_from = __is_class(Derived) && __is_class(Base) && convertible_to; - using nullptr_t = decltype(nullptr); template struct _un_const_helper { using type = T; }; @@ -154,6 +148,15 @@ template struct _is_ptr_helper : true_type {}; template concept is_ptr = _is_ptr_helper>::value; +template +concept convertible_to = __is_convertible(From, To); + +template +concept derived_from = __is_class(Derived) && __is_class(Base) && convertible_to; + +template +concept same_or_derived_from = same_as, Base> || derived_from, Base>; + template struct _tame_helper { using type = T; }; #define TAME_HELPER_IMPL(TRAILING) \ -- cgit