diff options
| author | Martin Ridgers <[email protected]> | 2022-01-07 12:55:16 +0100 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2022-01-07 13:03:11 +0100 |
| commit | e14f1d9ed68f4bd507f34d33312fe0cb84fc3618 (patch) | |
| tree | b5d15ea2051bb809b3640cb69cbe4b711310ddd9 /zencore/include | |
| parent | Use semtimedop() in NamedEvent::Wait() for platforms that support it (diff) | |
| download | zen-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.h | 2 |
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 |