Из-за ошибки я только что обнаружил, что этот код прекрасно компилируется с Visual Studio 17 и, возможно, с другими компиляторами. Теперь мне интересно, почему?
#include <iostream>
#include <string>
std::string foo(){
return nullptr;
}
int main(){
auto s = foo();
std::cout << s << std::endl;
}
Я мог бы предположить, что это потому, что std::basic_string
c'tor может быть вызван с помощью char*
и при возврате происходит неявное преобразование из ptr в std::string
(с NULL
качестве аргумента и последующим пуфом). Я на правильном пути?