Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2005-11-30 07:21:03


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

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