LINUX.ORG.RU

История изменений

Исправление 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 конструирование на расте обьявленной переменной на стеке.