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)

convenience.hpp.patch (579 bytes ) - added by Andrey Semashev 13 years ago.

Download all attachments as: .zip

Change History (2)

by Andrey Semashev, 13 years ago

Attachment: convenience.hpp.patch added

comment:1 by Beman Dawes, 12 years ago

Resolution: fixed
Status: newclosed

(In [62876]) Fix #3241

Note: See TracTickets for help on using tickets.