Boost logo

Boost Users :

From: Agoston Bejo (gusz1_at_[hidden])
Date: 2004-12-19 07:30:35


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;
}


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net