User = &Users[userInt]; //User
в хидере:
tl::optional<int> userInt;
это больше не int или что? не могу указать элемент массива
Неа, это не инт теперь Это optional<int>. Там может внутри лежать инт, а может и не лежать Хранимый инт можно достать через value, value_or, operator* (так понимаю, у тебя порт стандартного optional на ранние плюсы) Вдогонку, индексировать массив лучше не интами, а std::size_t
понял, спасибо. но тут мне size_t будет неудобен, т.к. userInt - член класса и любой ввод юзера, конвертированный в число
size_t лучше вообще ни для чего не использовать
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es107-dont-use-unsigned-for-subscripts-prefer-gslindex
выгоднее дать как можно больше гарантий, очень много ситуаций когда компилятор реально лучше оптимизирует, когда ему известно что тип беззнаковый
https://t.me/ProCxx/441968
наоборот саорее оптимизации для знакового числа, потому что переполнение не определено
ну я бы много поспорил, да и не только ES107, но и, скажем, ES87
а какие аргументы за беззнаковое? Мне в принципе аргументы против понятны, а за?
Обсуждают сегодня