Opened 4 years ago

Closed 4 years ago

#1013 closed ожидается проверка (задача сдана)

WW_15 vorobeva.polina

Reported by: vorobeva.polina Owned by: Дмитрий Лапшин (lapshin)
Component: WW_linq Version:
Keywords: Cc:

Description

Привет)
В лабе наверняка есть беды с лишними копированиями...
А еще такой вопрос: когда я пыталась реализовать where_neq, until_eq через создание лямбды и передачи в where/until_enumerator я очень долго страдала от того, что при вызове where_neq/until_eq несколько раз подряд все ломалось, если лямбдой я пыталась захватить переданное число по ссылке. Заменив такую штуку на копирование - все стало ок... Почему?

Change History (3)

comment:1 Changed 4 years ago by Дмитрий Лапшин (lapshin)

Owner: changed from Дмитрий Лапшин (lapshin) to vorobeva.polina
Summary: WW_15WW_15 vorobeva.polina
Type: ожидается проверкаожидаются исправления

Не падает, уже клёво! Только с копированиями проблема. 7/10.

Значит кто-то дохнет когда не надо. Лёгкий способ проверить — понаписать в конструкторы-деструкторы-присваивания и читать вывод.

В твоём случае вот такой код:

until_eq() {
    return until([](){});
    // Here lambda is already dead!!!
}

comment:2 Changed 4 years ago by vorobeva.polina

Owner: changed from vorobeva.polina to Дмитрий Лапшин (lapshin)
Type: ожидаются исправленияожидается проверка

Привет)
Огромное спасибо за пояснение, стало сильно понятнее)
Переписала на перемещения, написала тест с функтором с assert(false) внутри copy ctor, вроде перемещает. Только он это делает дважды, сначала в функции-команде, затем уже в конструкторе enumerator'а. Без дополнительного std::move падал по тому assert'у из копирующего конструктора... К сожалению, не совсем поняла, как перемещать только один раз)

comment:3 Changed 4 years ago by Дмитрий Лапшин (lapshin)

Resolution: задача сдана
Status: assignedclosed

Красотень.

Note: See TracTickets for help on using tickets.