1616#include < locale>
1717#include < boost/iterator/transform_iterator.hpp>
1818
19+ #include < boost/range/as_literal.hpp>
1920#include < boost/range/begin.hpp>
2021#include < boost/range/end.hpp>
2122#include < boost/range/value_type.hpp>
@@ -56,11 +57,10 @@ namespace boost {
5657 const RangeT& Input,
5758 const std::locale& Loc=std::locale())
5859 {
59- return std::transform (
60- begin (Input),
61- end (Input),
62- Output,
63- ::boost::algorithm::detail::to_lowerF<
60+ return ::boost::algorithm::detail::transform_range_copy (
61+ Output,
62+ as_literal (Input),
63+ ::boost::algorithm::detail::to_lowerF<
6464 typename range_value<RangeT>::type >(Loc));
6565 }
6666
@@ -73,15 +73,10 @@ namespace boost {
7373 const SequenceT& Input,
7474 const std::locale& Loc=std::locale())
7575 {
76- return SequenceT (
77- make_transform_iterator (
78- begin (Input),
79- ::boost::algorithm::detail::to_lowerF<
80- typename range_value<SequenceT>::type >(Loc)),
81- make_transform_iterator (
82- end (Input),
83- ::boost::algorithm::detail::to_lowerF<
84- typename range_value<SequenceT>::type >(Loc)));
76+ return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
77+ as_literal (Input),
78+ ::boost::algorithm::detail::to_lowerF<
79+ typename range_value<SequenceT>::type >(Loc));
8580 }
8681
8782 // ! Convert to lower case
@@ -97,10 +92,8 @@ namespace boost {
9792 WritableRangeT& Input,
9893 const std::locale& Loc=std::locale())
9994 {
100- std::transform (
101- begin (Input),
102- end (Input),
103- begin (Input),
95+ ::boost::algorithm::detail::transform_range (
96+ as_literal (Input),
10497 ::boost::algorithm::detail::to_lowerF<
10598 typename range_value<WritableRangeT>::type >(Loc));
10699 }
@@ -129,11 +122,10 @@ namespace boost {
129122 const RangeT& Input,
130123 const std::locale& Loc=std::locale())
131124 {
132- return std::transform (
133- begin (Input),
134- end (Input),
135- Output,
136- ::boost::algorithm::detail::to_upperF<
125+ return ::boost::algorithm::detail::transform_range_copy (
126+ Output,
127+ as_literal (Input),
128+ ::boost::algorithm::detail::to_upperF<
137129 typename range_value<RangeT>::type >(Loc));
138130 }
139131
@@ -146,16 +138,10 @@ namespace boost {
146138 const SequenceT& Input,
147139 const std::locale& Loc=std::locale())
148140 {
149- return SequenceT (
150- make_transform_iterator (
151- begin (Input),
152- ::boost::algorithm::detail::to_upperF<
153- typename range_value<SequenceT>::type >(Loc)),
154- make_transform_iterator (
155- end (Input),
156- ::boost::algorithm::detail::to_upperF<
157- typename range_value<SequenceT>::type >(Loc)));
158-
141+ return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
142+ as_literal (Input),
143+ ::boost::algorithm::detail::to_upperF<
144+ typename range_value<SequenceT>::type >(Loc));
159145 }
160146
161147 // ! Convert to upper case
@@ -171,10 +157,8 @@ namespace boost {
171157 WritableRangeT& Input,
172158 const std::locale& Loc=std::locale())
173159 {
174- std::transform (
175- begin (Input),
176- end (Input),
177- begin (Input),
160+ ::boost::algorithm::detail::transform_range (
161+ as_literal (Input),
178162 ::boost::algorithm::detail::to_upperF<
179163 typename range_value<WritableRangeT>::type >(Loc));
180164 }
0 commit comments