- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
static int
_S_compare(size_type __n1, size_type __n2)
{
const difference_type __d = difference_type(__n1 - __n2);
if (__d > __gnu_cxx::__numeric_traits<int>::__max)
return __gnu_cxx::__numeric_traits<int>::__max;
else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
return __gnu_cxx::__numeric_traits<int>::__min;
else
return int(__d);
}
но на кой ляд, сравнивая два size_type (вероятно, 64-битных), получать 32-битный int в виде их разницы...
P.S. __или_просто::__слишком_мало<подчеркиваний>::__в_тексте.
http://gcc.gnu.org/ml/libstdc++/2007-04/msg00106.html
Чтобы не тянуть весь limits который даёт +30 кб.
Я даже за если бы это был отдельный трейт для целых типов типа std::integral_limits или std::integer_limits, кроме стандартного с функциями.
В итоге в gcc с его numeric_traits так и сделали как я говорю, но стандарт неумолим, так что в своем коде этим пользоваться нельзя, поэтому приходится компайлтайм проверки переносить в рантайм. Глупо.
в стандарт лезу только когда надо найти ответы на твои вопросы
Все равно ты очень крут. Подумай над моим предложением.
> Подумай над моим предложением.
Так ты, оказывается, интеловский HR и ищешь тут новых работников? :)
От радости в зобу дыханье сперло, -
И на приветливы Лисицыны слова
Ворона каркнула во все воронье горло
Дописывает свой стандарт, отвечая на вопросы юзверей.