История изменений
Исправление alysnix, (текущая версия) :
{
some_class v(10);
return v.some_fun();
}
{
let v = SomeClass::new(10);
return v.some_func()
}
а ты не видишь разницы? в случае с++ само обьявление создает корректный обьект, которым можно пользоваться. само обьявление содержит вызов конструктора.
в случае раста само обьявление создает неинициализированную переменную, которой надо присвоить инициализированное значение, возвращенное из функции.
это вообще разный код.
код на с++ аналогичный растовому писался бы так
{
auto v = SomeClass::create(10);
}
так что давай нарисуй inplace конструирование на расте обьявленной переменной на стеке.
Исходная версия alysnix, :
{
some_class v(10);
return v.some_fun();
}
{
let v = SomeClass::new(10);
return v.some_func()
}
а ты не видишь разницы? в случае с++ само обьявление создает корректный обьект, которым можно пользоваться. само обьявление содержит вызов конструктора.
в случае раста само обьявление создает неинициализированную переменную, которой надо присвоить инициализированное значение, возвращенное из функции.
это вообще разный код.
код на с++ аналогичный растовому писался бы так
{
auto xx = SomeClass::create(10);
}
так что давай нарисуй inplace конструирование на расте обьявленной переменной на стеке.