Ответ 1
Это ошибка компилятора или, возможно, компилятор был выпущен до того, как эта функция была принята в стандарте.
В соответствии со стандартом С++ (5.1 Первичные выражения)
13 Идентификатор, который обозначает нестатический элемент данных или нестатическая функция члена класса может использоваться только:
- если это id-выражение обозначает нестатический элемент данных, и это появляется в неопубликованном операнде.
[ Example:
struct S {
int m;
};
int i = sizeof(S::m); // OK
int j = sizeof(S::m + 42); // OK
—end example ]