
Hi! Is there an easy way to use the exact type of what boost::bind(...) returns? The example above sheds some light of the source of this question. It would be much better (actually this is what bind is for, isn't it?) if I didn't have to define the plus_5 struct in order to be able to use transform_iterator. I wrote it in the comment what I'm thinking about. I could delve deeply into the bind header files and try to explicitly find what the exact class definition is, but I suspect it would not be too easy. Anyway, I may be forced to do that. Thx, Agoston // ------------------------------------------- #include <iostream> #include <functional> #include <algorithm> #include <boost/iterator/transform_iterator.hpp> #include <boost/bind.hpp> using namespace std; using namespace boost; struct plus_5 : public unary_function<int, int> { int operator()(int i) const { return i + 5; } }; typedef transform_iterator<plus_5, int*> Iterator; //------- *** ---------------------- //typedef transform_iterator< bind_type<plus<5>, _1, 5>, int* > Iterator; // how to easily get the return type of bind(plus<5>(), _1, 5) // in compilation time? //------- *** ------------------------ int _tmain(int argc, _TCHAR* argv[]) { int ia[] = {1,2,3,4,5}; copy(Iterator(ia), Iterator(ia+5), ostream_iterator<int>(cout, " ")); cout << endl; return 0; }