Привет!
Обнаружил в Visual C++ 2015 странное поведение. Баг?
#include <cstdio>
#define CALLING_CONV __vectorcall
struct parent {
virtual ~parent() {}
virtual void CALLING_CONV func() = 0;
};
struct child : parent {
void CALLING_CONV func() { printf("Hello!\r\n"); }
};
int main()
{
parent * p = new child();
void (CALLING_CONV parent::*Pfn)() = &parent::func;
(p->*Pfn)();
delete p;
return 0;
}
На строке '(p->*Pfn)();' программа вылетает. Если заменить __vectorcall на любой другой
calling convention (__cdecl, __stdcall, __fastcall, __thiscall), то все ок.
Visual Studio Professional 2015
Version 14.0.24720.00 Update 1
Конфигурация сборки — Debug или Release под платформу x86 (на x64 воспроизведения нет).