Opened 13 years ago
Closed 12 years ago
#3241 closed Bugs (fixed)
Patch for convenience.hpp compatibility with STLport
| Reported by: | Andrey Semashev | Owned by: | Beman Dawes | 
|---|---|---|---|
| Milestone: | Boost 1.40.0 | Component: | filesystem | 
| Version: | Boost 1.39.0 | Severity: | Problem | 
| Keywords: | stlport change_extension | Cc: | 
Description
The STLport has optimization for std::string so that string concatenation via operator+ does not yield an std::string object but rather a template expression temporary object of an internal type. This optimization breaks compilation of the convenience.hpp header on MSVC 9, at least. In the change_extension function the concatenation result is passed to operator/, which causes the following error:
.\boost/filesystem/convenience.hpp(84) : error C2679: binary '/' : no operator found which takes a right-hand operand of type 'stlp_std::priv::__bstr_sum<_CharT,_Traits,_Alloc,_Left,_Right,_StorageDirection>' (or there is no acceptable conversion)
        with
        [
            _CharT=char,
            _Traits=stlp_std::char_traits<char>,
            _Alloc=stlp_std::allocator<char>,
            _Left=stlp_std::priv::__bstr_wrapper<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,
            _Right=stlp_std::priv::__bstr_sum<char,stlp_std::char_traits<char>,stlp_std::allocator<char>,stlp_std::priv::__bstr_wrapper<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::priv::__sum_storage_elem<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::priv::__on_right>,
            _StorageDirection=stlp_std::priv::__on_right
        ]
The attached patch resolves the problem.
Attachments (1)
Change History (2)
by , 13 years ago
| Attachment: | convenience.hpp.patch added | 
|---|
comment:1 by , 12 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | new → closed | 
  Note:
 See   TracTickets
 for help on using tickets.
    

(In [62876]) Fix #3241