JUCE 5.4.1 core Array compilation errors on Linux


I’m trying to upgrade to JUCE 5.4.1 on embedded Linux and we’re limited in the GCC and libstdc++ versions we use. With the latest JUCE release, it seems that std::is_trivially_copyable is being used, which is not available in some versions of libstdc++. Are we now going to be stuck on JUCE 5.3.2 until we can use a newer libstdc++ version?

../../JuceLibraryCode/modules/juce_core/containers/juce_ArrayBase.h:375:59: error: ‘is_trivially_copyable’ is not a member of ‘std’
using TriviallyCopyableVoid = typename std::enable_if<std::is_trivially_copyable<T>::value, void>::type;



Is std::is_scalar available? If not, which of the type traits do you have?

Hopefully this will do the trick.

Wonderful, that seems to have fixed it, thanks so much!!!

I’m also trying to update to JUCE 5.4.1 with GCC 4.9 on linux and I got this error :

/Juce/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp:274:82: error: call of overloaded ‘make_unique(const juce::String&, const juce::String&, const juce::String&, juce::NormalisableRange<float>&, float&, std::remove_reference<std::function<juce::String(float)>&>::type, std::remove_reference<std::function<float(const juce::String&)>&>::type, bool&, bool&, bool&, juce::AudioProcessorParameter::Category&, bool&)’ is ambiguous

I just had the same Problem. I fixed it by going to View>Project Settings and choosing C++11 as the C++ Language Standard. As far as i understand that removes the ambiguity between “make_unique” of the JUCE framework and the “make_unique” of the standard library. After that i clicked File>Save to update the makefile.

1 Like