|
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