Я обнаружил, пытаясь использовать систему привязки классов в стиле luaBind, что передача указателей на переменные-члены, похоже, не работает правильно при компиляции как 64-битного приложения. В частности:
class Foo {
int a;
int b;
};
С указанным выше классом получение & Foo :: b в 32 битах вернет (как и ожидалось) 0x00000004. Тот же самый вызов в 64 битах возвращает 0xCCCCCCCC00000004, что составляет 32 бита правильных и 32 бита WTF.
Сначала я подумал, что это ошибка в компиляторе (я использую Visual Studio 2005 SP1 в Vista 64 Business), но это кажется довольно большой ошибкой для IDE, которая с гордостью заявляет о 64-битной совместимости. Поиск в Google ничего не дает (но я могу использовать неправильный термин. Указатель переменной члена? Кто-нибудь хочет меня поправить?), Поэтому мне любопытно, это только я или более распространенная проблема.