Re[29]: Carbon
От: vdimas Россия  
Дата: 22.04.24 10:03
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

V>>Здравствуйте, Sinclair, Вы писали:

V>>Почему конкретнос в span<> использутся знаковые индексы — потому что это смещения, для которых как раз знаковые и пригодны, о чём я сразу же и сказал, а ты побежал спорить от "недостаточной компетенции" (С) Синклер.
S>Напомню, что в статье речь не только об индексах, но и о size(), который ну никак-никак отрицательным быть не может.

Это ты просто не видишь всю эту ползучую контрреволюцию целиком. ))
Подсказка — а Timespan может быть отрицательным? А Datetime? Но они прекрасно складываются и вычитаются.
(впрочем, об этом было сказано сразу же, таких примеров полно, где совместная арифметика знаковых и беззнаковых логична и обоснована)

В общем, всю эту хрень уже обсуждали как-то по всему интернету несколько лет назад, и однозначного согласия как не было, так и не будет никогда.
Стандарт не принимается одним человеком, и там приняли вот так:
https://en.cppreference.com/w/cpp/container/span
https://en.cppreference.com/w/cpp/container/span/subspan

Потому что Страуструп предлагает лечение костылей коньками.
Т.е. предлагает решение другой задачи вместо целевой.

А если решать целевую задачу...
Учитывая легковесность оберток в С++, не факт, что решение целевой задачи должно означать введение специальных встроенных типов для индексов в язык, дабы иметь над ними соотв. математику знаковых/беззнаковых.

Вдогонку.
Тем более, что в язык ввели user-defined литералы:
struct Index {
    unsigned long long i_;
    explicit constexpr Index(const auto i) : i_(i) {}
};

Index operator ""_i(unsigned long long i) {
    return Index(i);
}

auto i = 1_i;
Отредактировано 22.04.2024 10:50 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.