
Аттрибутивно-ассоциативный ряд
29.09.2018
20:36:50
куда комитет смотрит!!111
мне нужна коллекция callbable move-only объектов

Yarique
29.09.2018
20:37:48
auto op = std::bind(&wrapper::operator(), std::move(std::make_unique<wrapper>()));

Google

Аттрибутивно-ассоциативный ряд
29.09.2018
20:38:27
1. а если без кучи?
2. в function не влезет

Yarique
29.09.2018
20:39:59

Аттрибутивно-ассоциативный ряд
29.09.2018
20:40:03
https://wandbox.org/permlink/zVH4fggFyM1t1VvE
function не поддерживает биндинг move-only типов

Yarique
29.09.2018
20:40:54

Аттрибутивно-ассоциативный ряд
29.09.2018
20:41:24
как через any? а вызывать как?
коллекция динамическая

Yarique
29.09.2018
20:43:22
со std:any да, я не прав
коллекция динамическая
std::function<bool()> op = std::bind(&wrapper::operator(), std::move(std::make_shared<wrapper>()));
тогда

Аттрибутивно-ассоциативный ряд
29.09.2018
20:45:01
собсна да. но это пиздец.

Yarique
29.09.2018
20:45:19
и получается будет операция копироваться, дёргая атомарный счётчик std::shared_ptr

Аттрибутивно-ассоциативный ряд
29.09.2018
20:45:35
щас бы в с++2z некопируемые типы через шаред гонять

Yarique
29.09.2018
20:45:35
но сам врапер не будет копироваться

Google

Yarique
29.09.2018
20:46:07

Аттрибутивно-ассоциативный ряд
29.09.2018
20:46:34
почему бы не сделать нормальную поддержку мув-семантики для бинд?
если он все равно хранит объект

Yarique
29.09.2018
20:46:47
щас бы std::function использовать в c++2z
он из C++03

Аттрибутивно-ассоциативный ряд
29.09.2018
20:47:31
что тогда не легаси?
что на замену бинду?

Yarique
29.09.2018
20:47:41
лямбды

Аттрибутивно-ассоциативный ряд
29.09.2018
20:48:19
как хранить лямбды в коллекции?

Yarique
29.09.2018
20:49:05
пиши шаблончики
либо
std::function<bool()> op = std::bind(&wrapper::operator(), std::move(std::make_shared<wrapper>()));
тогда

Аттрибутивно-ассоциативный ряд
29.09.2018
20:50:11
проще свой бинд\function написать
но отстутсвие таких вещей в стандарте это печалька
я не верю что никому никогда не нужно было такое

Yarique
29.09.2018
20:51:10

Аттрибутивно-ассоциативный ряд
29.09.2018
20:51:31

Yarique
29.09.2018
20:52:35
так это же прекрассно, что они есть ?

Google

Max
29.09.2018
20:54:50

Аттрибутивно-ассоциативный ряд
29.09.2018
20:57:40

Max
29.09.2018
21:01:32
хотя не, я туплю.
выяснили же, что бинд походу так и делает.
надо просто сигнатуру понять теперь ))

Аттрибутивно-ассоциативный ряд
29.09.2018
21:05:12
я тут гляжу в <function>. есть два метода https://pastebin.com/UtVD5yP5
вот у меня вызывается первый который принимает ссылку. хотя там есть второй который принимает &&
но как его вызвать непонятно

Yarique
29.09.2018
21:29:43

Аттрибутивно-ассоциативный ряд
29.09.2018
21:30:06
но снаружи его не достать

Yarique
29.09.2018
21:30:12
https://pastebin.com/pnRdH2V3

Yarique
29.09.2018
21:30:23
для твоей задачи никак ?

Александр
29.09.2018
21:30:59

Аттрибутивно-ассоциативный ряд
29.09.2018
21:31:23
я кажется баг нашел в structure binding
https://wandbox.org/permlink/lup0brjDThNUqlRP
или я чего то не понимаю

Yarique
29.09.2018
21:33:05
почему это баг? ты по значению всегда возвращаешь же

Аттрибутивно-ассоциативный ряд
29.09.2018
21:34:27
потому что если явно достать фьючерс из тупла то все работает
https://cppinsights.io/lnk?code=Ly8gVGhpcyBmaWxlIGlzIGEgIkhlbGxvLCB3b3JsZCEiIGluIEMrKyBsYW5ndWFnZSBieSBHQ0MgZm9yIHdhbmRib3guCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGZ1dHVyZT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDx0dXBsZT4KCmF1dG8gZm9vKCkgewogICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg1LCBzdGQ6OmZ1dHVyZTxpbnQ+e30pOwp9CgphdXRvIGJvbygpIHsKICAgIC8vKgogICAgYXV0byBbaSwgZl0gPSBmb28oKTsKICAgIC8qLwogICAgYXV0byBmID0gc3RkOjptb3ZlKHN0ZDo6Z2V0PDE+KGZvbygpKSk7CiAgICAvLyovCiAgICByZXR1cm4gc3RkOjptb3ZlKGYpOwp9CgoKaW50IG1haW4oKQp7CiAgICByZXR1cm4gMDsKfQ==&rev=1.0

Google

Yarique
29.09.2018
21:35:11
https://pastebin.com/G5ZmNBxt

Аттрибутивно-ассоциативный ряд
29.09.2018
21:35:49
разве по дефолту должно биндиться на ссылках?

Admin
ERROR: S client not available

Yarique
29.09.2018
21:36:14
https://pastebin.com/DY1RgwuK

Аттрибутивно-ассоциативный ряд
29.09.2018
21:37:01
тогда почему там ссылки?

Yarique
29.09.2018
21:37:15
но есть ещё и copy elision

Александр
29.09.2018
21:38:02
Всё, больше про function разговора не будет? :(

Аттрибутивно-ассоциативный ряд
29.09.2018
21:38:18
гсс биндит по ссылкам
что не позволяет сделать copy elision
я думал auto [x,y] = tuple(…) копирует элементы из тупла. а оно референсит. буду знать

Yarique
29.09.2018
21:42:43
если forward сделал каст в rvalue, значит правильно работает binding
https://pastebin.com/CFvVXxRb

Александр
29.09.2018
21:43:01
продолжай
Так я написал выше пост, объясняющий причины неработающей std::function с мув-онли типами

Аттрибутивно-ассоциативный ряд
29.09.2018
21:45:13
но я не уверен еще что этого достаточно

Александр
29.09.2018
21:46:42
Оно знает в меру. Наличие конструктора копирования должно определяться классом, который увы не может знать, что в него засунут. Ему только сигнатура известна

Аттрибутивно-ассоциативный ряд
29.09.2018
21:48:20
но он может взять чтото по && и притвориться что это move-only
я бы попробовал попатчить function но мне страшно

Google

Александр
29.09.2018
21:49:17
Там те же проблемы и с const/volatile/noexcept же
Type erasure кушает всё, оставляя лишь сигнатуру. При этом все qualifierы забываются. Почему? Косяк стандарта, думаю

Аттрибутивно-ассоциативный ряд
29.09.2018
21:53:17
подожди, но причем тут type erasure?
если function умеет только копировать функтор
почему бы не смувить его в назначеное место?
я правда не совсем понимаю как type erasure работает
вот есть function::operator(Fp&&). казалось бы вот оно. а внутри function(_VSTD::forward<_Fp>(__f)).swap(*this);
а все от отсутсвия function(F&&)

Александр
30.09.2018
07:19:29

Аттрибутивно-ассоциативный ряд
30.09.2018
09:28:15

Dmitry
30.09.2018
09:30:34
Если только свою написать и параметром передать что генерировать copy/move/none. Иначе вынуждена всё генерировать, далее если никогда не будет копироваться или перемещаться.

Аттрибутивно-ассоциативный ряд
30.09.2018
09:33:12
Я понимаю, что там большой объем работы. Но может никто пока не лез туда просто?