Здравствуйте, slava_phirsov, Вы писали:
O>>не принципиально
_>
Вообще-то такое должно на автомате писаться. Ну я так думаю 
+1
O>>Индексы вон тоже бы unsigned не помешало сделать
_>
Основоположники, ЕМНИП, учили использовать unsigned там и только там, где требуются операции с битами.
-1
емнип это авторы Java оправдывались почему у них нет беззнаковых целых. Последние удобно использовать в качестве индексов, т.к. для проверки индекса в массиве требуется одно сравнение вместо двух:
bool is_valid_index(int i, int size)
{
return i >= 0 && i < size;
}
bool is_valid_index(unsigned i, unsigned size)
{
return i < size;
}
А учитывая, что в стандартной библиотеке для индексов и количества элементов в контейнере используется беззнаковый size_t (с которым кстати в теории можно адресовать в 2 раза больше элементов чем с int), то с is_valid_index(int, int) получим на ровном месте предупреждение компилятора о преобразовании unsigned в int. Которое придется душить явным преобразованием к int
Задолбали такие функции:
void process_string(char const* str, int len);
// приходится их использовать так:
std::string str = "fgfg";
process_string(str.data(), static_cast<int>(str.size()));
И это блин в 21-м веке в С++ коде:
https://github.com/v8/v8/blob/master/include/v8.h#L1986