diff --git a/modules/juce_core/misc/juce_Functional.h b/modules/juce_core/misc/juce_Functional.h index 142f5f9d3e..57e9929164 100644 --- a/modules/juce_core/misc/juce_Functional.h +++ b/modules/juce_core/misc/juce_Functional.h @@ -36,6 +36,9 @@ namespace detail template struct EqualityComparableToNullptr() != nullptr)>> : std::true_type {}; + + template + constexpr bool shouldCheckAgainstNullptr = EqualityComparableToNullptr::value; } // namespace detail #endif @@ -51,15 +54,19 @@ namespace detail struct NullCheckedInvocation { template ::value, int> = 0> + std::enable_if_t, int> = 0> static void invoke (Callable&& fn, Args&&... args) { + JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Waddress") + if (fn != nullptr) fn (std::forward (args)...); + + JUCE_END_IGNORE_WARNINGS_GCC_LIKE } template ::value, int> = 0> + std::enable_if_t, int> = 0> static void invoke (Callable&& fn, Args&&... args) { fn (std::forward (args)...);