friend declarations are not injected in the enclosing scope by conforming compilers such as g++ 4, so fix compilation by always providing real declarations for operator+(wxString,anything)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -934,16 +934,19 @@ public:
|
|||||||
{ *this = str + *this; return *this; }
|
{ *this = str + *this; return *this; }
|
||||||
|
|
||||||
// non-destructive concatenation
|
// non-destructive concatenation
|
||||||
//
|
// two strings
|
||||||
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
|
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string1,
|
||||||
//
|
const wxString& string2);
|
||||||
|
// string with a single char
|
||||||
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
|
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
|
||||||
//
|
// char with a string
|
||||||
friend wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
|
friend wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
|
||||||
//
|
// string with C string
|
||||||
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
|
friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string,
|
||||||
//
|
const wxChar *psz);
|
||||||
friend wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
|
// C string with string
|
||||||
|
friend wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz,
|
||||||
|
const wxString& string);
|
||||||
|
|
||||||
// stream-like functions
|
// stream-like functions
|
||||||
// insert an int into string
|
// insert an int into string
|
||||||
@@ -1292,16 +1295,16 @@ public:
|
|||||||
{ return (wxString&)wxStringBase::operator+=(ch); }
|
{ return (wxString&)wxStringBase::operator+=(ch); }
|
||||||
};
|
};
|
||||||
|
|
||||||
// IBM xlC compiler needs these operators to be declared in global scope,
|
// notice that even though for many compilers the friend declarations above are
|
||||||
// although this shouldn't be a problem for the other compilers we prefer to
|
// enough, from the point of view of C++ standard we must have the declarations
|
||||||
// only do it for it in stable 2.6 branch
|
// here as friend ones are not injected in the enclosing namespace and without
|
||||||
#ifdef __IBMCPP__
|
// them the code fails to compile with conforming compilers such as xlC or g++4
|
||||||
wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
|
wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
|
||||||
wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
|
wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
|
||||||
wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
|
wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
|
||||||
wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
|
wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
|
||||||
wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
|
wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
|
||||||
#endif // __IBMCPP__
|
|
||||||
|
|
||||||
// define wxArrayString, for compatibility
|
// define wxArrayString, for compatibility
|
||||||
#if WXWIN_COMPATIBILITY_2_4 && !wxUSE_STL
|
#if WXWIN_COMPATIBILITY_2_4 && !wxUSE_STL
|
||||||
|
Reference in New Issue
Block a user