Hi Chris,
Documentation states that shmem should compile on this platform but, I've discovered an interesting error with char_traits. In all shmem streams, I have problems with the type referencing of post_type - I'm getting this error:
error: no type named `pos_type' in `struct std::char_traits<wchar_t>'
Below is the gcc output of my build error. Any help with this is greatly appreciated!
This error is familiar. I had it when doing the tests and I found that char_traits was defined for gcc: #if defined (_GLIBCXX_USE_WCHAR_T) || defined (_GLIBCXX_USE_WSTRING) /// 21.1.3.2 char_traits specializations template<> struct char_traits<wchar_t> { typedef wchar_t char_type; typedef wint_t int_type; typedef streamoff off_type; #if defined (_GLIBCXX_USE_WCHAR_T) typedef wstreampos pos_type; typedef mbstate_t state_type; #endif avoids defining pos_type if _GLIBCXX_USE_WCHAR_T is not defined. It seems that mingw defines _GLIBCXX_USE_WSTRING but not _GLIBCXX_USE_WSTRING. Consequence: you can't use wide streams. I modified my local header to pass the tests... and that's why my local tests succeed. The error is produced by the explicit instantiations of bufferstream_test.cpp: //Force instantiations to catch compile-time errors template class basic_bufferbuf<char>; template class basic_bufferbuf<wchar_t>; template class basic_bufferstream<char>; template class basic_bufferstream<wchar_t>; template class basic_ibufferstream<char>; template class basic_ibufferstream<wchar_t>; template class basic_obufferstream<char>; template class basic_obufferstream<wchar_t>; Comment instantiations taking wchar_t parameter to avoid the error. Googling around, I've found that Boost.Iostreams documentation(http://www.boost.org/libs/iostreams/doc/portability.html) marks gcc-mingw 3.2-4.0 as "Wide streams are not supported". So I'm afraid you've found a bug in the Shmem test. Wide stream instantiations should be removed or surrounded by an #ifdef when mingw is being used. Thanks and regards, Ion