|
Boost Users : |
From: Chris Goller (goller_at_[hidden])
Date: 2005-11-30 09:36:48
On 11/30/05, David Abrahams <dave_at_[hidden]> wrote:
> Chris Goller <goller_at_[hidden]> writes:
>
> > I have code that will compile using msvc 7.1 but will not under intel 9.0.
> >
> > Here is some simplified code to illustrate my problem:
> >
> > using namespace boost;
> > using namespace std;
> > typedef array<int, 2> array_type;
> >
> > array_type a;
> > a[0] = 0; a[1] = 1;
> >
> > vector<array_type> v;
> > v.push_back(a);
> > vector<int> h;
> >
> > for_each(v.begin(), v.end(), mem_fun_ref(&array_type::front));
> >
> > This compiles and runs using msvc 7.1, but intel 9.0 errors with the following:
> >
> > error: more than one instance of overloaded function "mem_fun_ref"
> > matches the argument list:
> > function template "std::mem_fun_ref(_Result (_Ty::*)() const)"
> > function template "std::mem_fun_ref(_Result (_Ty::*)())"
> > argument types are: (<unknown-type>)
>
> Solution:
>
> Don't use std::mem_fun_ref
> Use boost::mem_fn instead.
>
> http://www.boost.org/libs/bind/mem_fn.html#Q1
>
> HTH,
> --
> Dave Abrahams
> Boost Consulting
> www.boost-consulting.com
Sadly, the same problem: works with msvc 7.1 put not intel 9.0:
error: more than one instance of overloaded function "mem_fn" matches
the argument list:
function template "boost::mem_fn(R (T::*)() const)"
function template "boost::mem_fn(R (T::*)())"
argument types are: (<unknown-type>)
This problem initially came up when I was using boost::bind in this way:
make_transform_iterator(v.begin(), bind(&array_type::at, _1, 0))
Intel 9.0 had these errors:
error: more than one instance of overloaded function "bind" matches
the argument list:
function template "boost::bind(R (T::*)(B1), A1, A2)"
function template "boost::bind(R (T::*)(B1) const, A1, A2)"
argument types are: (<unknown-type>, boost::arg<1>, int)
Thanks,
Chris
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