Скажем, у меня есть:
// This is all valid in C++11.
struct Foo {
int i = 42;
int& j = i;
};
// Let take a pointer to the member "j".
auto b = &Foo::j; // Compiler is not happy here
// Note that if I tried to get a pointer to member "i", it would work, as expected.
Foo f;
std::cout << f.*b; // Try using the pointer to member
Компилятор жалуется, что я не могу взять адрес члена, потому что он является ссылкой. Если быть точным:
Семантическая проблема: не может сформировать указатель-член для члена 'j' ссылочного типа 'int &'
Я знаю, что это кажется бессмысленным, но мне просто интересно, почему это невозможно.
Почему это невозможно?