Odpověď na názor

Odpovídáte na názor ke článku Minimalistický http server v C++.

  • 3. 10. 2018 7:31

    lopata (neregistrovaný)

    Nepotřebuju nic debugovat, abych věděl, že se to v runtime inicializovat bude z mnoha důvodů:

    1. Není to const, compiler musí vytvořit storage a celou strukturu inicializovat, protože se to může kdykoliv změnit.

    2. I kdyby to const bylo, stejně se to bude inicializovat, protože konstruktor string_view je constexpr basic_string_vi­ew(const CharT* s), musí to spočítat délku s. Mohlo by to být bez inicializace v runtime, kdyby to celé bylo constexpr, ale není.

    3. Konstruktor string_view není noexcept, takže teoreticky může vyhodit výjimku, pokud by se to stalo, musí to vyhodit výjimku i v runtime, nejde to optimalizovat. Kdyby to celé bylo constexpr, tak to může vyhodit výjimku v compile time, což by spadlo už během kompilace, takže s constexpr by to mohlo být bez inicializace v runtime.

    Jak už jsem psal, měl bys dostudovat constexpr, nemáš úplně jasno v tom, k čemu to je a co to dělá. Od C++20 budou constexpr i knihovní funkce včetně std::sort, takže i taková věc jako std::array<std::pa­ir<std::strin­g_view, std::string_view>> půjde elegantně setřídit v compile time.