О рекурсивной оптимизации Tail

Я использовал две нижеприведенные функции для тестирования рекурсивной оптимизации Tail в MSVC08

int TailRecursively1(int i)
{
return TailRecursively1(i);
}

int TailRecursively2(std::string str)
{
return TailRecursively2(str);
}

почему TailRecursively1 был оптимизирован, а TailRecursively2 вызвал переполнение стека?

5

Решение

Потому что есть вызовы для конструктора и деструктора копирования std :: string при отправке параметра str по значению в TailReucrsively2?

(Я не уверен на 100% в этом)

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]