Я писал javascript, и одна из немногих вещей, которые мне нравятся в среде, - это способ использования promises/futures для создания обработчиков для асинхронных событий.
В С++ вам нужно вызывать .get в будущем, и он блокируется до тех пор, пока не появится результат будущего, но в Javascript вы можете написать .then(fn), и он вызывается функцией, когда результат будет готов. Критически он делает это в том же потоке, что и вызывающий, в дальнейшем, поэтому нет проблем с синхронизацией потоков, о которых нужно беспокоиться, по крайней мере, не таких, как в С++.
Я думаю в С++ что-то вроде -
auto fut = asyncImageLoader("cat.jpg");
fut.then([](Image img) { std::cout << "Image is now loaded\n" << image; });
Есть ли способ достичь этого в С++? Очевидно, что для обработки диспетчеризации обратных вызовов потребуется какая-то очередь событий и цикл событий. Возможно, я, вероятно, в конечном итоге напишу код, чтобы сделать большую часть этого, но хотел посмотреть, можно ли легко достичь цели, используя стандартные средства.