Hlavní navigace

Názor ke článku C++: Mapování hodnot z runtime na integrální konstanty od Ondřej Novák - Jo, ten rekurzivní systém funguje taky, ale mrzelo...

  • 5. 6. 2023 19:56

    Ondřej Novák

    Jo, ten rekurzivní systém funguje taky, ale mrzelo mě, že některé překladače (clang) nepochopil, že jde o výběr alternativy, a překládal to tupě i na -O3. Pro 64 variant to tedy vypadalo takto (rozbalení rekurze)

    if (x == 1) return fn<1>();
    if (x == 2) return fn<2>();
    if (x == 3) return fn<3>();
    if (x == 4) return fn<4>();
    if (x == 5) return fn<5>();
    ...
    Proto jsem zkusil variantu přes jump-table.

    GCC v některých situacích byl schopen pochopit, že jde o výběr variant a tu jump table tam udělal. Ale jen v některých situacích