Poniższy kod:Dlaczego nie można uzyskać wskaźnika do członka z niekwalifikowanej nazwy funkcji elementu w C++ 11?
struct X
{
void f() {}
void g()
{
auto h = &f;
}
};
skutkuje:
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’
Moje pytanie brzmi, dlaczegojest to niedozwolone i zabronione przez standard? Byłoby wygodniej, gdy użytkownik odniósłby się do niego jako niewykwalifikowany, więc zakładam, że istnieje jakieś uzasadnienie (bezpieczeństwo, niejasność, łatwość implementacji kompilatora?) W odniesieniu do wymagań.
Ta poprzednia odpowiedź wydaje się odpowiedzieć na pytanie: http://stackoverflow.com/a/7138582 –