aboutsummaryrefslogtreecommitdiff
path: root/zencore/include
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2022-01-07 12:55:16 +0100
committerMartin Ridgers <[email protected]>2022-01-07 13:03:11 +0100
commite14f1d9ed68f4bd507f34d33312fe0cb84fc3618 (patch)
treeb5d15ea2051bb809b3640cb69cbe4b711310ddd9 /zencore/include
parentUse semtimedop() in NamedEvent::Wait() for platforms that support it (diff)
downloadzen-e14f1d9ed68f4bd507f34d33312fe0cb84fc3618.tar.xz
zen-e14f1d9ed68f4bd507f34d33312fe0cb84fc3618.zip
Correct implementation of Invocable concept
Without this the compiler is unable to resolve ambiguity when overloads only differ by the lambda's arguments.
Diffstat (limited to 'zencore/include')
-rw-r--r--zencore/include/zencore/zencore.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/zencore/include/zencore/zencore.h b/zencore/include/zencore/zencore.h
index 8688ddc13..12eacfb00 100644
--- a/zencore/include/zencore/zencore.h
+++ b/zencore/include/zencore/zencore.h
@@ -132,7 +132,7 @@
template <class T> concept Integral = std::is_integral_v<T>;
template <class T> concept SignedIntegral = Integral<T> && std::is_signed_v<T>;
template <class T> concept UnsignedIntegral = Integral<T> && !std::is_signed_v<T>;
- template <class F, class... A> concept Invocable = true;
+ template <class F, class... A> concept Invocable = requires(F&& f, A&&... a) { std::invoke(std::forward<F>(f), std::forward<A>(a)...); };
template <class D, class B> concept DerivedFrom = std::is_base_of_v<B, D> && std::is_convertible_v<const volatile D*, const volatile B*>;
#endif