std::vector<std::future<SomeResource>> объектов, которые, собственно, могут быть загружены асинхронно или отложенно. Как хранить эти отложенно загруженные объекты? В своё время первое, что пришло в голову, было std::vector<std::variant<std::future<SomeResource>,SomeResource>>, но при всей моей любви к variant пользоваться этой штукой, кхм, не очень удобно.
Кто-нибудь подскажет более красивые способы? Или я вообще хочу чего-то странного?
у тебя есть куча future, почему просто по ним не пройтись и не достать то что в них валяется?
А как к значениям потом обращаться когда ещё хочется почитать
что значит ещё почитать) ты везде get() вызвал и получил vector<T> условный
Ну я про то, что ты хранишь вектор future, прочитал их. Тебе нужно их перекладывать в другой вектор. Проблема тогда когда у тебя это хранится как поле и нужно как-то эти вектора местами менять
ну, там дело было в том, что были важны порядковые номера объектов для доступа по индексу, и при этом запрашивать их могли, очевидно, много раз - загрузка происходила только в первый, или при инвалидации. То есть вариант "сразу запустить все таски и дождаться последнего" не подходит, а постепенная загрузка и выпихивание во второй массив загруженных объектов - вариант не сильно более красивый - в обоих в массивах будут появляться пустоты
это в любом случае лучше чем странные variant в векторе
Обсуждают сегодня