Что не так со следующим кодом (вылетает):
#include <string>
#include <iostream>
void foo(std::string str, unsigned long long val)
{
std::cout<< str<< " "<< val<< std::endl; // Crashes if commented as well
}
int main()
{
double d = 30.0;
foo("abc", d);
}
Visual Studio 2012 / Отладка / Win32
Он работает в x64, а также если мы изменим unsigned long long
в long long
или даже unsigned long
Этот фрагмент кода вылетает. В других сценариях адреса параметров функции изменяются.
Я подозреваю, что это как-то связано с _stol2
который преобразует double
в unsigned long long
Отправлено в Microsoft как ошибка (принято)
Других решений пока нет …