Fampiharana ireo Generators miaraka amin'ny Macros ao amin'ny C++

Nanoratra mpamorona ao amin'ny C++ mifototra amin'ny fanoratana do ireo mpankafy, izay natao tamin'ny macros ihany koa. Open source ny fampiharana azy eo ambanin'ny lisansa MIT. // Raha tsy misy fanoratana do auto result = ::bind(mx, [&](auto&& x) { return ::bind(my, [&](auto&& y) { return make_value(x + y); }); }); // Miaraka amin'ny fanoratana do auto result = DO( LET x IS(mx); LET y IS(my); return make_value(x + y); );

Ohatra kaody miaraka amin'ny mpamokatra: // Fanomezana mpamokatra maimaim-poana constexpr auto my_generator() { return GENERATOR((int i), (.i = 0), // na LAHATRA_MPANORINA YIELD(42); WHILE(i != 10) ( YIELD(i); ++i; ) mamerina ny fiafarana (); ); } static_assert(std::ranges::equal(my_generator(), std::array{42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9})); int main() { auto gen = my_generator(); gen.i = 3; std::println("{}", gen); // manonta [42, 3, 4, 5, 6, 7, 8, 9] /* ho an'ny (auto i : gen) { std::println("{}", i); } */ }

Voafaritra amin'ny alalan'ny asa bind sy asa fototra, generator_continuation, ny mpamokatra. Ny bind tsirairay dia tanterahina moramora izao, fa tsy manombana ny zava-drehetra indray mandeha. Ny kaody dia manome dikan-teny roa: ny iray mifototra amin'ny asa virtoaly ary ny iray mifototra amin'ny analog an'ny std::variant mampiasa Type Loopholes mba hahazoana fahombiazana bebe kokoa.

Source: opennet.ru

Mividiana fampiantranoana azo antoka ho an'ny tranokala misy fiarovana DDoS, mpizara VPS VDS 🔥 Mividiana fampiantranoana tranonkala azo antoka miaraka amin'ny fiarovana DDoS, mpizara VPS VDS | ProHoster