Error compiling vst3pluginformat in VS2013


#1
1>e:\projects\testplug\modules\juce_audio_processors\format_types\juce_vst3pluginformat.cpp(916): error C2593: 'operator =' is ambiguous (..\..\JuceLibraryCode\juce_audio_processors.cpp)
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(112): could be 'juce::var &juce::var::operator =(juce::String &&)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(111): or       'juce::var &juce::var::operator =(juce::var &&) throw()'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(104): or       'juce::var &juce::var::operator =(juce::var::NativeFunction)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(103): or       'juce::var &juce::var::operator =(juce::ReferenceCountedObject *)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(102): or       'juce::var &juce::var::operator =(const juce::Array<juce::var,juce::DummyCriticalSection,0> &)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(101): or       'juce::var &juce::var::operator =(const juce::String &)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(100): or       'juce::var &juce::var::operator =(const wchar_t *)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(99): or       'juce::var &juce::var::operator =(const char *)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(98): or       'juce::var &juce::var::operator =(double)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(97): or       'juce::var &juce::var::operator =(bool)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(96): or       'juce::var &juce::var::operator =(juce::int64)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(95): or       'juce::var &juce::var::operator =(int)'
1>          e:\projects\testplug\modules\juce_core\containers\juce_variant.h(94): or       'juce::var &juce::var::operator =(const juce::var &)'
1>          while trying to match the argument list '(juce::var, const juce::MemoryBlock)'
1>          e:\projects\testplug\modules\juce_audio_processors\format_types\juce_vst3pluginformat.cpp(834) : see reference to function template instantiation 'void juce::VST3Classes::VST3HostContext::AttributeList::addMessageToQueue<juce::MemoryBlock>(Steinberg::Vst::IAttributeList::AttrID,const Type &)' being compiled
1>          with
1>          [
1>              Type=juce::MemoryBlock
1>          ]
1>  juce_core.cpp

#2

there is a missing assignment operator in var class:

var& var::operator= (const MemoryBlock& binaryData) { type->cleanUp (value); type = &VariantType_Binary::instance; value.binaryValue = new MemoryBlock (binaryData); return *this; }

this shows clearly how differently each compiler understands the standards…


#3

Can’t seem to reproduce this with vs2013 community.


#4

i’m on vs2013 community too.


#5

OK I’ve add this to JUCE. See latest develop tip.