I just read:
and noticed it's kind of old and most of the answers regard pre-2011 C++. These days we have syntactic lambdas, which can even deduce the return type, so lazy evaluation seems to boil down to just passing them around: Instead of
auto x = foo();
you execute
auto unevaluted_x = []() { return foo(); };
and then evaluate when/where you need to:
auto x = unevaluted_x();
Seems like there's nothing more to it. However, one of the answers there suggests using futures with asynchronous launching. Can someone lay out why/if futures are significant for lazy-evaluation work, in C++ or more abstractly? It seems as though futures may very well be evaluated eagerly, but simply, say, on another thread, and perhaps with less priority than whatever created them; and anyway, it should be implementation-dependent, right?
Also, are there other modern C++ constructs which are useful to keep in mind in the context of lazy evaluation?
Aucun commentaire:
Enregistrer un commentaire