
Hi Sebastian, You are 100% right. The return by reference is wrong. and the removeConst is absolutely not needed. It works just fine without. And I understand why adding & to the std::string is wrong. So just a quick recap, to see if we have 100% of the solution: There is no way to use directly the std::string::replace since get() is const member function. We do need a replace wrapper, which unfortunately creating std::string instances. Am I right here? Thanks for your help! Kobi. On 4/27/06, Sebastian Redl <sebastian.redl@getdesigned.at> wrote:
Kobi Cohen-Arazi wrote:
Will not work ! Why adding the & hurts? Kobi.
Because you attempt to bind a non-const reference to a temporary object (the return value of get(). The compiler refuses to do that. The compiler doesn't catch another possibly problematic situation, though, and that's replace's return by reference. You're returning a reference to a function parameter, and that's generally not a good idea.
On the other hand, the removeConst function does absolutely nothing in your program except create yet another copy of the string. get() already returns a copy. The function is const, but its return value is not a const reference.
Sebastian Redl _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users