Boost Users :
Subject: Re: [Boost-users] pointer to member function of multi_index
From: Sandeep Gupta (gupta.sandeep_at_[hidden])
Date: 2009-03-17 23:31:56
On Tue, Mar 17, 2009 at 7:57 PM, Steven Watanabe <watanabesj_at_[hidden]> wrote:
> Sandeep Gupta wrote:
>> I am sure this is due to some trivial mistake; the statement to
>> create a pointer member function insert of multi_index container fails
>> in the following code:
>> typedef multi_index_container<
>> ordered_unique<member<pair<int,int>, int, &pair<int, int>::first> >
>> > mic;
>> std::pair<mic_index::iterator, bool> (mic_index::*fn)(pair<int,int>) =
>> &mic_index::insert; //compile error
>> The error is due to mismatch in signature as given in the error:
>> int>, ...
>> SuperMeta::type::node_type> >, bool>...
>> If need be I can post full error message. Appreciate any suggestions.
> The signature is
> std::pair<mic_index::iterator, bool> (mic_index::*fn)(const pair<int,int>&);
> However, it is not usually a good idea to rely on the exact
> signature of library member functions. For instance, the standard
> library allows member functions to have extra default arguments.
> In the case of multi_index, using a reference to const will not
> always work because multi_index uses call_traits.
> In Christ,
> Steven Watanabe
I see. So I take it that its best to avoid creating function objects
or pointer to standard library member functions.
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