Size: a a a

2020 July 31

ПК

Побитый Кирпич... in supapro.cxx
В варианте без co_await (синхронный) всё норм и там, и там
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Такой может и переживает, а
co_await do_some(get_some_object().get_some_reference_to_int());

Уже не факт
почему? даже эта временная фигня валидна в этой строке, и умрет только после неё
источник

DP

Denis Paukaev in supapro.cxx
а после неё уже закончится ваш do_some
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
почему? даже эта временная фигня валидна в этой строке, и умрет только после неё
get_some_object() тоже по ссылке возвращает
источник

ПК

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

DP

Denis Paukaev in supapro.cxx
это ровно то же самое что

do_some(get_some_object().get_some_reference_to_int());
источник

DP

Denis Paukaev in supapro.cxx
просто может быть выполнено в другом потоке
источник

АК

Александр Караев... in supapro.cxx
показывали же пример вида
generator<std::string_view> split(const std::string& s)
где UB, потому что аргумент умирает раньше времени
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
это ровно то же самое что

do_some(get_some_object().get_some_reference_to_int());
нет, в варианте с co_await some_object может  помереть вместе с интом
источник

АК

Александр Караев... in supapro.cxx
Denis Paukaev
это ровно то же самое что

do_some(get_some_object().get_some_reference_to_int());
источник

АК

Александр Караев... in supapro.cxx
маст хэв для чтения
источник

DP

Denis Paukaev in supapro.cxx
ещё раз, пока выполняется строчка co_await(...) живы все временные объекты которые в ней появились
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
ещё раз, пока выполняется строчка co_await(...) живы все временные объекты которые в ней появились
get_some_object() не временный объект, get_some_reference_to_int() тоже
источник

ПК

Побитый Кирпич... in supapro.cxx
это ссылки на что то долгоживущее, но недостаточно долго, чтобы выжить до cout << param
источник

АК

Александр Караев... in supapro.cxx
Denis Paukaev
ещё раз, пока выполняется строчка co_await(...) живы все временные объекты которые в ней появились
ну вот же пример с UB..

generator<char> explode(const std::string& s) {
   for (char ch : s) {
       co_yield ch;
   }
}

int main() {
   for (char ch : explode("hello world")) {
       std::cout << ch << '\n';
   }
}
источник

АК

Александр Караев... in supapro.cxx
хотя это про co_yield
источник

L

Luchinkin Ilya in supapro.cxx
Всем привет, вопрос, какой контейнер лучше юзать из стд, если нужно добавлять только в конец, а также прокручивать элементы и налету удалять(удалять надо именно элементы в начале, то есть не будет ситуаций, когда надо удалить [1], а [0] оставить)?
источник

D

Danya in supapro.cxx
Luchinkin Ilya
Всем привет, вопрос, какой контейнер лучше юзать из стд, если нужно добавлять только в конец, а также прокручивать элементы и налету удалять(удалять надо именно элементы в начале, то есть не будет ситуаций, когда надо удалить [1], а [0] оставить)?
std::deque
источник

D

Danya in supapro.cxx
push_back, pop_front
источник

DP

Denis Paukaev in supapro.cxx
Александр Караев
хотя это про co_yield
ну так это другое нет?
источник