
Thorsten Ottosen wrote:
On 1--1--013 4::7,, Nathan Ridge wrote:
Passing range by ref (&) is fine, but using (&&) results in and error. Any ideas?
[snip]
[snip]
Range metafunctions don't accept references to range types as their input; you must pass the range type itself.
So, you must call remove_reference<> on the deduced type 'T' prior to passing it to a range metafunction.
I wonder if we should change the range metafunctions to accept references to range types, and do the reference stripping themselves?
I think we should. This has come up before.
-Thorsten
My objective is to support this common type of usage:
template<typename out_t> F (out_t & o) { }
F (boost::make_iterator_range (blah.begin(), blah.end()));
I filed https://svn.boost.org/trac/boost/ticket/885 .
In the meantime, you can use the remove_reference workaround I mentioned,
as follows:
template<typename out_t>
void F (out_t && o)
{
typedef typename boost::range_value