Size: a a a

2020 May 03

AP

Antony Polukhin in pro.cxx
Nikita Provotorov
Я правильно понимаю, что строчка std::unordered_set<T> obj; может сделать динамическую аллокацию?)
Может, но вменяемые реализации STL этого не делают )
источник

NP

Nikita Provotorov in pro.cxx
Antony Polukhin
Может, но вменяемые реализации STL этого не делают )
На это есть объективные причины, или это просто недосмотрели? Если это выпилить, то можно было бы на default-ctor навесить noexcept, как на векторе
источник

AP

Antony Polukhin in pro.cxx
Spoonson
никто случаем не знает примера, где можно посмотреть, как можно обернуть какую-нибудь стороннюю либу в  boost asio awaitable (coroutines ts) или просто расширить какие-то базовые примитивы для awaitable?
пытаюсь тестово набросать что-то сложнее хеллоу ворлда, и кажется, что пока не хватает функциональности и надо вручную дописывать (а это не так просто). Например, сделать co_await на синхронной очереди какой-нибудь.
Вам нужео написать awaitable и сделать чтобы очередь его возвращала.

Вот тут есть введение в корутины на рускомoм и какая-никакая инструкция по наисанию своих awaitable  https://habr.com/ru/company/yandex/blog/420861/

Можете так же посмотреть на https://github.com/lewissbaker/cppcoro - это примитивы для рабльы с корутинами, которые будут приняты в C++2?
источник

AP

Antony Polukhin in pro.cxx
Spoonson
никто случаем не знает примера, где можно посмотреть, как можно обернуть какую-нибудь стороннюю либу в  boost asio awaitable (coroutines ts) или просто расширить какие-то базовые примитивы для awaitable?
пытаюсь тестово набросать что-то сложнее хеллоу ворлда, и кажется, что пока не хватает функциональности и надо вручную дописывать (а это не так просто). Например, сделать co_await на синхронной очереди какой-нибудь.
Более дельного ничего нет. Если разберётесь - выложите код в открытый доступ, интересно будет посмотреть
источник

NP

Nikita Provotorov in pro.cxx
Nikita Provotorov
На это есть объективные причины, или это просто недосмотрели? Если это выпилить, то можно было бы на default-ctor навесить noexcept, как на векторе
Ааа, так noexcept вообще почти ни у какого контейнера нет, видимо где то тут есть зарытая собака...
источник

S

Spoonson in pro.cxx
Antony Polukhin
Более дельного ничего нет. Если разберётесь - выложите код в открытый доступ, интересно будет посмотреть
спасибо за ссылки! Значит, придется разбираться в потрохах буста. Если что-то выйдет рабочее - скину.
источник

AD

Andrey Davydov in pro.cxx
Nikita Provotorov
Ааа, так noexcept вообще почти ни у какого контейнера нет, видимо где то тут есть зарытая собака...
источник

NP

Nikita Provotorov in pro.cxx
Ага, теперь понятна мотивация, спасибо.
Только получается как то некрасиво: из-за хотелки динамически аллоцировать sentinel ноды:
1. потеряли noexcept и в default-ctor ах и в move-ctor ах
2. не получили взамен гарантий на end итераторы при мувах по стандарту

И все еще непонятна ситуация с хештаблицами, там ведь, кажется, и вовсе не нужны никакие sentinel ноды (никогда не думал о внутрянке  итераторов хештаблиц)
источник

AD

Andrey Davydov in pro.cxx
Spoonson
никто случаем не знает примера, где можно посмотреть, как можно обернуть какую-нибудь стороннюю либу в  boost asio awaitable (coroutines ts) или просто расширить какие-то базовые примитивы для awaitable?
пытаюсь тестово набросать что-то сложнее хеллоу ворлда, и кажется, что пока не хватает функциональности и надо вручную дописывать (а это не так просто). Например, сделать co_await на синхронной очереди какой-нибудь.
Что такое "синхронная очередь"? Корутины не помогут магическим образом сделать std::queue асинхронной.
источник

S

Spoonson in pro.cxx
Andrey Davydov
Что такое "синхронная очередь"? Корутины не помогут магическим образом сделать std::queue асинхронной.
конечно, это так. Но синхронную очередь можно много где взять,  вопрос в целом был как сделать co_await на чем-то своем и при этом встроить это в систему asio с awaitable.
источник

AD

Andrey Davydov in pro.cxx
К примеру так https://gist.github.com/AndreyG/c81cbaebc3bae358e0a151dc3d8143c9 можно await-ить QTimer.
источник

F

Fox in pro.cxx
Mr_ChAI
Но он в ядре линукса дофига используется
... Поэтому оно ни фига и не портабельно
источник

F

Fox in pro.cxx
Nikita Provotorov
Я ничего не имею против implementation-specific вещей, если они в рамках стандарта. Но конкретно в данном случае скорее вызывает недоумение не конкретные реализации, а то, что стандарт позволяет динамическую аллокацию на пустом месте.
Если у тебя конструктор T{} делает динамическую аллокацию, то никуда ты от неё не денешься же
источник

F

Fox in pro.cxx
Spoonson
никто случаем не знает примера, где можно посмотреть, как можно обернуть какую-нибудь стороннюю либу в  boost asio awaitable (coroutines ts) или просто расширить какие-то базовые примитивы для awaitable?
пытаюсь тестово набросать что-то сложнее хеллоу ворлда, и кажется, что пока не хватает функциональности и надо вручную дописывать (а это не так просто). Например, сделать co_await на синхронной очереди какой-нибудь.
Будут скоро материалы в @procxxchannel на эту тему
источник

NP

Nikita Provotorov in pro.cxx
Fox
Если у тебя конструктор T{} делает динамическую аллокацию, то никуда ты от неё не денешься же
Речь про аллокации со стороны контейнера)
источник

S

Spoonson in pro.cxx
Andrey Davydov
К примеру так https://gist.github.com/AndreyG/c81cbaebc3bae358e0a151dc3d8143c9 можно await-ить QTimer.
спасибо за пример!
источник

F

Fox in pro.cxx
Nikita Provotorov
Речь про аллокации со стороны контейнера)
А ткни плз в пункт стд; см например, драфт на eel.is/c++draft
источник

S

Spoonson in pro.cxx
Fox
Будут скоро материалы в @procxxchannel на эту тему
отлично, буду ждать
источник

NP

Nikita Provotorov in pro.cxx
Fox
А ткни плз в пункт стд; см например, драфт на eel.is/c++draft
Пункт чего?
источник

F

Fox in pro.cxx
Antony Polukhin
Более дельного ничего нет. Если разберётесь - выложите код в открытый доступ, интересно будет посмотреть
Реймонд Чен писал заметки о том, как юзать корутины и как они оборачивали в новом плюсовом апи в корутины
источник