Size: a a a

2020 October 15

IZ

Ilia Zviagin in pro.cxx
Denis Chernikov
Насколько помню, MSVC не особо любит чистый Си, и я бы не ждал от них строгой конформности стандарту))
Ну, да, кто бы спорил...
источник

SE

Stanislav Ershov in pro.cxx
Ilia Zviagin
Так выше, показал...
и шо?
источник

ПК

Побитый Кирпич... in pro.cxx
Vlad Faust
Мы когда взяли футур, можно кастовать в packaged_task<void()> спокойно (смотри в мастер ветке)
Это требует пруфа
источник

IZ

Ilia Zviagin in pro.cxx
ничего, просто прикольно...
источник

SE

Stanislav Ershov in pro.cxx
Ilia Zviagin
ничего, просто прикольно...
ну, если ты пропустил то msvc stl испльзует boost math :)
источник

ПК

Побитый Кирпич... in pro.cxx
Vlad Faust
Ну а что мне ещё остаётся
Ты можешь хранить не packaged_tasks напрямую, а какой нибудь ITask интерфейс, которого будет метод Execute() виртуальный, который  в конкретной реализации будет вызывать оператор() у таски
источник

ПК

Побитый Кирпич... in pro.cxx
наследник у ITask шаблонный и инстанцируется при добавлении в контейнер как раз конкретным типом package_task
источник

VF

Vlad Faust in pro.cxx
Побитый Кирпич
Ты можешь хранить не packaged_tasks напрямую, а какой нибудь ITask интерфейс, которого будет метод Execute() виртуальный, который  в конкретной реализации будет вызывать оператор() у таски
Там в любом случае будет std::function, который и есть корень проблемы — его нельзя мувать в MSVC
источник

VF

Vlad Faust in pro.cxx
Или вы предлагаете альтернативный способ хранения лямбд?
источник

ПК

Побитый Кирпич... in pro.cxx
Vlad Faust
Или вы предлагаете альтернативный способ хранения лямбд?
Да
источник

VF

Vlad Faust in pro.cxx
Не могли бы вы набросать пример реализации такого контейнера?
источник

ПК

Побитый Кирпич... in pro.cxx
Их можно хранить напрямую в шаблонном классе (от типа лямбды) а вызывать по виртуальному методу Execute()
источник

ПК

Побитый Кирпич... in pro.cxx
У тебя вообще всё просто, у тебя даже паарметров нет
источник

ПК

Побитый Кирпич... in pro.cxx
не надо их хранить отдельно
источник

VF

Vlad Faust in pro.cxx
Да, параметров нет. Но есть closure
источник

ПК

Побитый Кирпич... in pro.cxx
Vlad Faust
Да, параметров нет. Но есть closure
Это неважно. Лямбда это функтор, её в шаблонном классе можно по значению хранить
источник

ПК

Побитый Кирпич... in pro.cxx
Чтобы можно было хранить разные шаблонные инстансы в контейнере и нужен виртуальный интерфейс
источник

VF

Vlad Faust in pro.cxx
Пожалуйста, реализуйте пример. Без комментариев, не форматированный, но чтобы я уже от него отталкивался
источник

VF

Vlad Faust in pro.cxx
Кстати, важно то, что задания должны сами по себе храниться в контейнере (очереди)
источник

VF

Vlad Faust in pro.cxx
Надеюсь, вы не предлагаете делать ThreadPool<variant_of_all_possible_futures>?
источник