# Boost.Range

## Range Adaptors

#### `replaced_if`

>     rng | boost::adaptors::replaced_if( pred, new_value )

>     boost::make_replaced_if_range( rng, pred, new_value )

- Precondition:
  - The range value-type is convertible to the argument type of `pred`.
  - `new_value` is convertible to the value-type of the range.
- Postconditions: For all elements `[x]` in the returned range, the value `x` is equal to the value of `pred(y) ? new_value : y` where `y` is the corresponding element in the original range.
- Range Category: ForwardRange

### Example

            #include <boost/range/adaptor/replaced_if.hpp>
            #include <boost/range/algorithm/copy.hpp>
            #include <boost/assign.hpp>
            #include <algorithm>
            #include <iostream>
            #include <vector>

            struct is_even
            {
                bool operator()(int x) const { return x % 2 == 0; }
            };

            int main(int argc, const char* argv[])
            {
                using namespace boost::adaptors;
                using namespace boost::assign;

                std::vector<int> input;
                input += 1,2,3,4,5,6,7,8,9;

                boost::copy(
                    input | replaced_if(is_even(), 10),
                    std::ostream_iterator<int>(std::cout, ","));

                return 0;
            }

This produces the output:
`1,10,3,10,5,10,7,10,9`

(C) Copyright Neil Groves 2009 (C) Copyright Thorsten Ottosen 2003-2004