Этот код компилируется (как я и ожидал):
typedef void __stdcall (*Func)();
struct A {
static void __stdcall f() { }
};
int main() {
Func p = A::f;
}
Но этот:
struct A {
typedef void __stdcall (*Func)();
static void __stdcall f() { }
};
int main() {
A::Func p = A::f;
}
завершается с не очень полезным сообщением об ошибке:
error: invalid conversion from `void (*)()' to `void (*)()'
Я использую g ++ 3.4.2 под Vista (я знаю, что это древняя версия, но сейчас у меня нет доступа к какой-либо другой среде).Очевидно, я что-то здесь упускаю.Любая помощь будет оценена.