Hossein Haeri wrote:
Hi Jeff.
bind(newPrint, _2, out));
//Error!*/
bind( newPrint, _1, boost::ref(out) ); //untested
Doesn't work! :(
I'm not sure why you thought you would use _2?
You mean it starts from 0, and the second argument should be dealed with _1?
No, the first argument if _1. Your function object's operator(): ostream& operator ()( const Container& c, ostream& out )const has only two arguments. And bind( newPrint // instance of function object , _1 // placeholder to recieve *value_type::const_iterator , boost::ref(out) // bound reference to ostream ) is as if a function ostream& f( const value_type::value_type& _1 ) { print<value_type,i-1>()( _1, out ); } is being passed to for_each. I think your problems lie elsewhere. Try this out with simpler non-templated, non-recursive functions first. Jeff Flinn