diff --git a/src/utils.hh b/src/utils.hh index 21ed5fd3..7b7fd2d7 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -162,6 +162,9 @@ auto to_underlying(E value) template class FunctionRef; +template +concept ConvertibleTo = std::is_convertible_v; + template class FunctionRef { @@ -174,9 +177,10 @@ public: {} template - requires (not std::is_same_v> and - (std::is_void_v or - requires (Target t, Args... a, void(&func)(Res)) { func(t(a...)); })) + requires requires (Target t, Args... a) { + requires not std::is_same_v>; + { t(a...) } -> ConvertibleTo; + } FunctionRef(Target&& target) : m_target{&target}, m_invoker{[](void* target, Args... args) {