On 2/17/06, Meryl Silverburgh 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
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 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