[section:indirected indirected]

[table
    [[Syntax] [Code]]
    [[Pipe] [`rng | boost::adaptors::indirected`]]
    [[Function] [`boost::adaptors::indirect(rng)`]]
]

* [*Precondition:] The `value_type` of the range defines unary `operator*()`
* [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `*y` where `y` is the corresponding element in the original range.
* [*Range Category:] __single_pass_range__
* [*Returned Range Category:] The range category of `rng`

[section:indirected_example indirected example]
``
#include <boost/range/adaptor/indirected.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/shared_ptr.hpp>
#include <algorithm>
#include <iostream>
#include <vector>

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

    std::vector<boost::shared_ptr<int> > input;

    for (int i = 0; i < 10; ++i)
        input.push_back(boost::shared_ptr<int>(new int(i)));

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

    return 0;
}
``
[endsect]

This would produce the output:
``
0,1,2,3,4,5,6,7,8,9
``
[endsect]


