===================================================================
RCS file: /pack/cvsroots/wxwidgets/wxWidgets/include/wx/string.h,v
retrieving revision 1.206.2.2
retrieving revision 1.206.2.3
diff -u -r1.206.2.2 -r1.206.2.3
--- wxWidgets/include/wx/string.h 2005/11/01 13:32:48 1.206.2.2
+++ wxWidgets/include/wx/string.h 2005/12/15 19:26:27 1.206.2.3
@@ -1291,16 +1291,15 @@
{ return (wxString&)wxStringBase::operator+=(ch); }
};
-// IBM xlC compiler needs these operators to be declared in global scope,
-// although this shouldn't be a problem for the other compilers we prefer to
-// only do it for it in stable 2.6 branch
-#ifdef __IBMCPP__
+// notice that even though for many compilers the friend declarations above are
+// enough, from the point of view of C++ standard we must have the declarations
+// here as friend ones are not injected in the enclosing namespace and without
+// 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& string, wxChar ch);
wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
-#endif // __IBMCPP__
// define wxArrayString, for compatibility
#if WXWIN_COMPATIBILITY_2_4 && !wxUSE_STL