Re: [Boost-users] [Bind] How to bind?
Should I use a seperate functor like this? template<class T> struct dereference : public std::unary_function<T*, T> { T operator()(T *pt) { return *pt; } }; A a; boost::bind(&processA, boost::bind(dereference<A>(), _1))(&a); If the answer is yes, is there a safer and stronger equivalence of "dereference" in boost? Thanks again. B/Rgds Max ====================================== Hello On simple question: For struct A {}; void processA(A& a) {} A *pa = new A(); How to write a bind expression that make (pa); equivalent to processA(*pa); I've tried with this: boost::bind(&processA, *_1) but failed. I've also tried with this: processA(*boost::lambda::_1) also failed. Thanks for any information. B/Rgds Max ------------------------------------------------------------------- 新浪空间——与朋友开心分享网络新生活!(http://space.sina.com.cn/ ) ------------------------------------------------------------------- 新浪空间——与朋友开心分享网络新生活!(http://space.sina.com.cn/ )
AMDG Max wrote:
Should I use a seperate functor like this?
template<class T> struct dereference : public std::unary_function<T*, T> { T operator()(T *pt) { return *pt; } };
A a; boost::bind(&processA, boost::bind(dereference<A>(), _1))(&a);
If you're using Boost.Bind, yes, although it might be better for dereference to return a reference.
If the answer is yes, is there a safer and stronger equivalence of "dereference" in boost?
Boost.Lambda allows dereference.
I've tried with this:
boost::bind(&processA, *_1) processA(*boost::lambda::_1)
A slight variation should work: boost::lambda::bind(&processA, *boost::lambda::_1) In Christ, Steven Watanabe
participants (2)
-
Max
-
Steven Watanabe