diff --git a/include/wx/any.h b/include/wx/any.h index 8ee3d3c830..2e9a9af4e5 100644 --- a/include/wx/any.h +++ b/include/wx/any.h @@ -765,32 +765,6 @@ public: /** Assignment operators. */ - wxAny& operator=(const wxAny &any) - { - if (this != &any) - AssignAny(any); - return *this; - } - -#if wxUSE_VARIANT && (!defined(__VISUALC__) || __VISUALC__ >= 1300) - // - // Adding this operator for VC6 breaks wxAny, and also - // some cases of implicit conversion from wxVariant to wxAny. - // - // e.g. wxAny any = variant; // should work - // - // wxAny any; - // any = 16; - // any = variant; // probably doesn't work - uses template - // // assignment, most likely - // - wxAny& operator=(const wxVariant &variant) - { - AssignVariant(variant); - return *this; - } -#endif - template wxAny& operator=(const T &value) { @@ -800,6 +774,21 @@ public: return *this; } + wxAny& operator=(const wxAny &any) + { + if (this != &any) + AssignAny(any); + return *this; + } + +#if wxUSE_VARIANT + wxAny& operator=(const wxVariant &variant) + { + AssignVariant(variant); + return *this; + } +#endif + wxAny& operator=(const char* value) { Assign(wxString(value)); return *this; } wxAny& operator=(const wchar_t* value) diff --git a/tests/any/anytest.cpp b/tests/any/anytest.cpp index d405b5cf2f..e215f48905 100644 --- a/tests/any/anytest.cpp +++ b/tests/any/anytest.cpp @@ -482,16 +482,13 @@ void wxAnyTestCase::wxVariantConversions() CPPUNIT_ASSERT(variant.GetType() == "ulonglong"); CPPUNIT_ASSERT(variant.GetLong() == 1000); - // FIXME-VC6: for VC6, any = variant needs to be any = wxAny(variant). - // Note that 'wxAny any = variant' does work, probably because - // ctor is used in that case instead of assignment operator. - any = wxAny(vString); + any = vString; CPPUNIT_ASSERT(any == "ABC"); res = any.GetAs(&variant); CPPUNIT_ASSERT(res); CPPUNIT_ASSERT(variant.GetString() == "ABC"); - any = wxAny(vDouble); + any = vDouble; double d = wxANY_AS(any, double); CPPUNIT_ASSERT_DOUBLES_EQUAL(d, TEST_FLOAT_CONST, FEQ_DELTA); res = any.GetAs(&variant); @@ -500,7 +497,7 @@ void wxAnyTestCase::wxVariantConversions() TEST_FLOAT_CONST, FEQ_DELTA); - any = wxAny(vBool); + any = vBool; CPPUNIT_ASSERT(wxANY_AS(any, bool) == true); res = any.GetAs(&variant); CPPUNIT_ASSERT(res);