В стародавние времена по неизвестной никому причине у std::array метод size не сделали static. Что конечно ломает ожидания человека, который логически предполагает, что узнать размер массива можно и без объекта такого массива( особенно в шаблонном коде )
Для std:;array есть кривое решение - специализация std::tuple_size_v. А вот для std::span и метод size не static и специализации tuple_size_v нет. Зато есть какой то бесполезный static constexpr size_t extent;
Предлагаю депрекейтнуть этот extent нахрен, добавить специализацию tuple_size_v для std::span<T, I> и "удалённую" специализацию для std::span<T, std::dynamic_extent>;
Добавление static не предлагаю т.к. разоруться представители ABI,
Получим общий интерфейс для похожих вещей, оправдаются ожидания новичков, которые думают что можно без объекта класса у которого размер записан в типе получить его размер(без заморочек)
В стародавние времена по неизвестной никому причине у
std::array
метод size не сделалиstatic
. Что конечно ломает ожидания человека, который логически предполагает, что узнать размер массива можно и без объекта такого массива( особенно в шаблонном коде ) Для std:;array есть кривое решение - специализацияstd::tuple_size_v
. А вот для std::span и методsize
неstatic
и специализацииtuple_size_v
нет. Зато есть какой то бесполезныйstatic constexpr size_t extent;
Предлагаю депрекейтнуть этот extent нахрен, добавить специализациюtuple_size_v
дляstd::span<T, I>
и "удалённую" специализацию дляstd::span<T, std::dynamic_extent>;
Добавление static не предлагаю т.к. разоруться представители ABI, Получим общий интерфейс для похожих вещей, оправдаются ожидания новичков, которые думают что можно без объекта класса у которого размер записан в типе получить его размер(без заморочек)