Откуда функция std::знает о соглашении о вызовах?

int __cdecl ccall(int i)
{
    wprintf(L"ccall(%d)", i);
    return 0;
}

int __stdcall stdcall(int i)
{
    wprintf(L"stdcall(%d)", i);
    return 0;
}

int __cdecl wmain(int argc, wchar_t **argv)
{
    std::function<int(int)> fnc = ccall;
    std::function<int(int)> fnstd = stdcall;

    fnc(10); // printed well
    fnstd(100); // printed well
    return 0;
}

Меня беспокоило, как назначить объект __stdcall functionобъекту std::function. Но без указания соглашения о вызовах все работает нормально. Откуда std::functionзнать, что такое соглашение о вызовах?

9
задан Benjamin 15 April 2012 в 20:20
поделиться