Is this a good way to implement my own functions (e.g. DoSomethingWithRange) that accept a boost range as a parameter?

#include <iostream>
#include <vector>
#include <boost/range.hpp>
#include <boost/range/algorithm.hpp>
#include <boost/range/adaptors.hpp>

using namespace std;

template <typename RangeType>
    void DoSomethingWithRange(const RangeType &range)
{
    typename RangeType::const_iterator beginIt = boost::begin(range);
    typename RangeType::const_iterator endIt = boost::end(range);

    for(typename RangeType::const_iterator it = beginIt; it != endIt; ++it)
    {
        cout << *it << endl;
    }
}

bool IsPos(int i)
{
    return i>0;
}

int main(int , char** )
{
    vector<int> test;

    test.push_back(1);
    test.push_back(-1);

    DoSomethingWithRange(test | boost::adaptors::filtered(IsPos));
}
Edit
Report