Я по ошибке написал не пустую функцию , которая ничего не возвращает. Я не получил предупреждение или какую-то ошибку. Я скопировал ту же функцию в другой среде (эта среда имеет старую версию Ubuntu, а компилятор принадлежит более старому семейству ARM Poky - GNU G CC 5.x ARM poky, до того, как была FAMILLY GNU G CC 6.x ARM OE) и Я получил ошибку sgm .
Я знаю, что не пустая функция имеет неопределенное поведение , но как я могу доказать, что компиляторы влияют на это?
Вот упрощение моей функции:
std::shared_ptr<int> get_ptr()
{
std::shared_ptr<int> p = nullptr; //missing return
}
int main ()
{
std::shared_ptr<int> a = get_ptr(); //what is actually initialize with?
if (nullptr == a)
{
std::cout << "Is working \n"<< std::endl;
}
else
{
std::cout << *get_ptr();
}
return 0;
}
Знаете, кто-нибудь объяснит мне, что происходит за кулисами? Очень поможет мне любая информация.