Size: a a a

2020 August 26

ПК

Побитый Кирпич... in supapro.cxx
Alexander Potapov
Просто когда "надо следить", это значит, что рано или поздно кто-то недоследит, а там уже UB
Структуру владения на самом деле не сложно строить, там несколько пунктов всего и 90% это "юзай ссылку"
источник

AS

Anatoly Shirokov in supapro.cxx
Alexander Potapov
примитивы по константной ссылке аааааа
Все легально. Чего ты?
const int &r = 10+10; // продление времени жизни временного объекта, как результата выражения
источник

ПК

Побитый Кирпич... in supapro.cxx
horse horssyyy
А че по ссылке нельзя?
Товарищ выше говорит что нельзя
источник

ПК

Побитый Кирпич... in supapro.cxx
Надо смарт поинтеры
источник

hh

horse horssyyy in supapro.cxx
Еще вопрос не дают заснуть. Инлайн рекурсивные функции, как это вообще выглядит?
источник

ПК

Побитый Кирпич... in supapro.cxx
horse horssyyy
Еще вопрос не дают заснуть. Инлайн рекурсивные функции, как это вообще выглядит?
В общем случае никак
источник

hh

horse horssyyy in supapro.cxx
Госпади сколько в мире с++ интересного
источник

hh

horse horssyyy in supapro.cxx
Мне кажется можно за всю жихнь не разобраться
источник

BH

Blue Heart in supapro.cxx
horse horssyyy
Госпади сколько в мире с++ интересного
Дя)
источник

AP

Alexander Potapov in supapro.cxx
Побитый Кирпич
У тебя есть композиция parent  + child. Parent хранит child по значению. Как ты будешь хранить parent внутри child?
Да тут случай прямой зависимости жизни объекта. Тут есть гарантии того, что раньше будет уничтожено
источник

ПК

Побитый Кирпич... in supapro.cxx
Alexander Potapov
Да тут случай прямой зависимости жизни объекта. Тут есть гарантии того, что раньше будет уничтожено
Ну дак обычно так и есть
источник

LA

Liber Azerate in supapro.cxx
horse horssyyy
Еще вопрос не дают заснуть. Инлайн рекурсивные функции, как это вообще выглядит?
А чего нет? Например(простите меня за это):
1 + (3 + (7 + (15...))))
Выглядит как
int f(int x){
  return x + f( x*2 + 1 );
}
источник

AP

Alexander Potapov in supapro.cxx
В общем случае не так. Никто не мешает взять ссылку от объекта или захватить лямбдой, положить её в контейнер, а объект тем временем уничтожиться
источник

ПК

Побитый Кирпич... in supapro.cxx
Alexander Potapov
В общем случае не так. Никто не мешает взять ссылку от объекта или захватить лямбдой, положить её в контейнер, а объект тем временем уничтожиться
Тут вопрос в другом - в какой момент будет ошибка. Если считать, что ошибка в том, что ты так захватил быстроживущий объект по ссылке в долгоживущий, то shared pointer тут не выход, а костыль. Ты как бы вместо того чтоб продумать норм структуру владения маскируешь ошибку продлевая жизнь объекту.
источник

ПК

Побитый Кирпич... in supapro.cxx
Лучше стараться сводить ситуацию к использованию ссылки, и только если это невозможно - юзать уже shared pointer
источник

ПК

Побитый Кирпич... in supapro.cxx
Потому что ссылка прямо говорит, что объект другим не владеет. А shared pointer врёт. По факту объект владеет, но на самом деле не должен, просто "чтоб не падало" так сделали
источник
2020 August 27

hh

horse horssyyy in supapro.cxx
Liber Azerate
А чего нет? Например(простите меня за это):
1 + (3 + (7 + (15...))))
Выглядит как
int f(int x){
  return x + f( x*2 + 1 );
}
Так а как компилятор это заинлайнит?
источник

D

Danya in supapro.cxx
horse horssyyy
Еще вопрос не дают заснуть. Инлайн рекурсивные функции, как это вообще выглядит?
inline не говорит компилятору заинлайнить функцию, он и так хорошо знает что инлайнить, а что нет
источник

LA

Liber Azerate in supapro.cxx
horse horssyyy
Так а как компилятор это заинлайнит?
Ну возьмёт и так и развернёт. Впрочем, лучше забудь – это был совсем другой код...
источник

D

Danya in supapro.cxx
Liber Azerate
А чего нет? Например(простите меня за это):
1 + (3 + (7 + (15...))))
Выглядит как
int f(int x){
  return x + f( x*2 + 1 );
}
Потому что оно не знает в компайл-тайм чему равно x
Оно сможет заинлайнить только если x известно в компайл тайме
источник