FR: Support clean builds with -Wnontrivial-memcall

Clang 20 adds -Wnontrivial-memcall which emits a warning if you memcpy or memset a struct that isn’t a POD. This warnings is enabled by default. juce should build cleanly with this warning enabled.

         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_hashmap_t<unsigned int, hb_vector_t<unsigned int>>::item_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_hashmap_t<unsigned int, Triple>' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_inc_bimap_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'OT::tuple_delta_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_hashmap_t<const hb_vector_t<bool> *, hb_vector_t<char>>::item_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'OT::TupleVariationData::tuple_variations_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_vector_t<int>' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'OT::delta_row_encoding_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'OT::index_map_subset_plan_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'hb_set_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'CFF::parsed_cs_str_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'CFF::cff2_font_dict_values_t' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'CFF::cff2_private_dict_values_base_t<CFF::dict_val_t>' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_graphics/fonts/harfbuzz\hb-null.hh(179,11): error : first argument in call to 'memcpy' is a pointer to non-trivially copyable type 'CFF::cff2_private_dict_values_base_t<CFF::op_str_t>' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus.vcxproj]

Thanks for reporting, that’s fixed here:

Thanks, but there are still a couple in the VST3 SDK

          C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\pluginterfaces/base/fvariant.h(51,31): error : first argument in call to 'memset' is a pointer to non-trivially copyable type 'Steinberg::FVariant' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus_VST3.vcxproj]
         C:\actions-runner\_work\Nexus\Nexus\modules\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\pluginterfaces/base/fvariant.h(260,10): error : first argument in call to 'memset' is a pointer to non-trivially copyable type 'Steinberg::FVariant' [-Werror,-Wnontrivial-memcall] [C:\actions-runner\_work\Nexus\Nexus\Builds\vs\Nexus_VST3.vcxproj]