В C ++ 03 Существует две формы выражений sizeof (см. ИСО / МЭК 14882: 2003 5.3.3 [expr.sizeof]).
sizeof unary-expression
sizeof ( type-id )
MetaStruct::pData
не является допустимым выражением(преобразование в тип объекта) или имя типа.
Вам нужно будет сделать
sizeof( void* )
или
sizeof MetaStruct().pData
Обновление: спасибо@hvd, который указывает, что сейчас это должно быть действительно допустимо в C ++ 11.
Теперь вы можете использовать id-выражение , которое ссылается на нестатический член классав тех случаях, когда это не оценивается.Очевидно, это не поддерживается VS2010.
Существует также новая форма sizeof
в C ++ 11: sizeof ... ( identifier )
, но она здесь не актуальна.