----------------- %< -------------------------
#include <algorithm>
#include <functional>
#include <vector>
class B{};
class A {
public:
void f(int) const {}
void f(const B&) const {}
};
int main() {
std::vector<A> vec;
std::for_each(vec.begin(), vec.end(),
bind2nd(std::mem_fun_ref(&A::f), B()));
return 0;
}
----------------- %< -------------------------
1) Tvetydighet i hvilken f() som skal kalles
2) f(const B&) kan ikke brukes fordi det lages referanse til referanse.
Begge overrasker meg litt. 1) fordi jeg ville tro at kompilatoren
har nok informasjon til å vite hvilke argumenter f kalles med, 2)
fordi det begrenser anvendelsen til funksjoner som kopierer
argumementet.
Er det noe lettvint jeg kan gjøre med bind_2nd eller mem_fun_ref
for å fjerne tvetydigheten og/eller generering av referanse til
referanse?
--
mail: echo 2573598220386708649153854147564528964895403631P|dc