|
Boost Users : |
Subject: Re: [Boost-users] boost::function/boost::bind compilation error
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-09-05 20:35:37
AMDG
Ahmed Badran wrote:
> I was trying to use boost function/bind to bind the first argument of
> a member function that takes two arguments, when I got into a
> compilation error that I can't quite decipher or understand, below is
> a sample representation of the problem, and then there's the
> compilation error, am I doing something incorrectly here?
>
> I have tried removing the boost::mem_fn instantiation with no difference.
>
>
> #include <boost/function.hpp>
> #include <boost/bind.hpp>
> #include <boost/mem_fn.hpp>
> #include <iostream>
>
> using namespace std;
> using namespace boost;
>
> class my_class
> {
> public:
> void test(bool b)
> {
> cout << "got " << b << endl;
> }
> private:
> };
>
>
>
> int main()
> {
> my_class c;
> boost::function1<void, bool> test_fn;
> boost::bind(&my_class::test, &c, _2);
>
> /* causes a compilation error */
> test_fn = boost::bind<void>(boost::mem_fn(&my_class::test), &c, _2);
Use _1 instead of _2. The placeholder number indicates
the first argument to the function object created by bind.
You're only passing a single bool argument in, so only _1
is a valid placeholder.
In Christ,
Steven Watanabe
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