Boost logo

Boost :

Subject: [boost] [algorithm] to_lower_copy / to_upper_copy with no output param assumes sequence to be same as input
From: Sebastian Karlsson (sairony_at_[hidden])
Date: 2011-06-22 09:05:46

It would seem: std::string foo = boost::algorithm::to_lower_copy<
std::string >( "bar" ); isn't valid. Instead one has to do for
example: std::string foo = boost::algorithm::to_lower_copy(
std::string( "bar" ) ), which while perhaps just as terse and natural
creates an extra unneeded temporary. I propose the following addition,
as well as one for to_upper_copy:

                template<typename OutputSequenceT, typename RangeT>
                inline OutputSequenceT
                        const RangeT& Input,
                        const std::locale& Loc=std::locale())
                        OutputSequenceT Output( ::boost::begin( Input ), ::boost::end( Input ) );
                                ::boost::as_literal( Output ),
                                typename range_value<OutputSequenceT>::type >(Loc));
                        return Output;

Or perhaps I've missed something altogether :)

Kind regards,
Sebastian Karlsson

Boost list run by bdawes at, gregod at, cpdaniel at, john at