Топунов Владимир Андреевич
Топунов Владимир Андреевич
zstring_view
[Так](https://github.com/vtopunov/zstring_view/blob/master/zstring_view.h)
> Большой разницы не вижу. Если память выделена, куча это или стек, то можно "просто" определить, что `*(view.data() + view.size())`, вызванный внутри особой библиотечной функции не есть UB (в кавычках,...
> ```c++ > void f(optional o) noexcept { > if (o) > o.value(); > } > ``` Подобный код всегда не оптимален
А может лучше `Bitmask operator & (Bitmask, Bitmask) = default;` и ` constexpr bool is_set(Bitmask obj, Bitmask bits) noexcept { return (obj & bits) == bits; } `
+Хотелось что-бы что-бы std::move_if_noexcept и им подобные работали оптимально при -fno-exceptions. Все функции и методы помечались как noexcept или std::is_nothrow... и им подобные считали, что всё помечено как noexcept
gls::narrow [GSL](https://github.com/Microsoft/GSL)
> @vtopunov это близко, но в геймдеве исключения запрещены по религиозным причинам, поэтому хочется всё таки аналог ассёрта, то есть контракт. `template` `constexpr T narrow(U value) noexcept` `{` ` assert(std::in_range(value));`...
Имя функции описывает имя возвращаемого значения. Если это не так, то возвращаемое значение - не самое главное в функции и читайте что-то за пределами кода
> Чтобы понимать, имеется в виду: > > ```c++ > std::swap(*it, vec.back()); > vec.pop_back(); > ``` `*it = std::move(vec.back()); vec.pop_back();`