From: Martin F. <mar...@gm...> - 2004-07-18 12:55:40
|
Hello, I found some problems of the new 3.4.1 release version with stdlibc++ headers and Unicode string constants. Here is a little example: #include <string> using namespace std; main() { wchar_t buffer[] =3D {'1', ' ', 'x', 'x', 'x', '2', '3', '\0'}; const wchar_t cmp_string[] =3D {'x', 'x', 'x', '\0'}; wcsstr(buffer, L"xxx"); wcsstr(buffer, cmp_string); } When trying to compile the second call to std::wcsstr() with L"..." string constant, I get the following error message from g++: wcsstr-test.cpp: In function `int main()': wcsstr-test.cpp:10: error: call of overloaded `wcsstr(wchar_t[8], const wch= ar_t[4])' is ambiguous E:/MinGW/bin/../lib/gcc/mingw32/3.4.1/../../../../include/string.h:119: not= e: candidates are: wchar_t* wcsstr(const wchar_t*, const wchar_t*) E:/MinGW/bin/../lib/gcc/mingw32/3.4.1/../../../../include/c++/3.4.1/cwchar:= 227: note: wchar_t* std::wcsstr(wchar_t*, wchar_t*) This example works with the previous version g++ 3.4.0. The problem seems to be related with the following changed precompiler swit= ch in include/c++/3.4.1/cwchar(140): #if _GLIBCXX_USE_WCHAR_T || _GLIBCXX_USE_WSTRING In version 3.4.0 it's only: #if _GLIBCXX_USE_WCHAR_T Regards, Martin |