Il seguente codice:Perché non è possibile ottenere il puntatore al membro dal nome della funzione membro non qualificato in C++ 11?
struct X
{
void f() {}
void g()
{
auto h = &f;
}
};
risultati in:
error: ISO C++ forbids taking the address of an unqualified
or parenthesized non-static member function to form a pointer
to member function. Say ‘&X::f’
La mia domanda è, perché è questo non permesse e proibite dalla norma? Sarebbe più conveniente che un utente non lo qualificasse, quindi presumo ci sia qualche altra motivazione (sicurezza? Un'ambiguità? Facilità di implementazione del compilatore?) Per il requisito?
Questa risposta precedente sembra affrontare la questione: http://stackoverflow.com/a/7138582 –