Boost logo

Boost Users :

From: me22 (me22.ca_at_[hidden])
Date: 2006-02-17 23:26:27


On 2/17/06, Meryl Silverburgh <silverburgh.meryl_at_[hidden]> wrote:
> Why boost is trying to make a copy of A (a vector is a list of A*).
>
> And how can I fix that without making A constructor public?
>

I have no idea why it'd be doing that -- some more code would be helpful.

The following testcase seems to work fine:
#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/bind.hpp>

template <typename T>
struct dereference_as {
   typedef T& result_type;
   template <typename P>
   result_type operator()(P ptr) {
       return *ptr;
   }
};

void showfirst(char c) { std::cout << c << std::endl; }

int main() {

    std::vector<char const*> v;
    v.push_back( "1" );
    v.push_back( "2" );
    v.push_back( "3" );
    v.push_back( "4" );
    v.push_back( "5" );
    v.push_back( "6" );

    std::for_each( v.begin(), v.end(),
                   boost::bind( &showfirst, boost::bind(
dereference_as<char const>(), _1 ) ) );
}

~ Scott


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