Кресты / Говнокод #12956 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 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);
      }

Запостил: LispGovno LispGovno, (Updated )

Комментарии (20) RSS

      • ну код из недр STL так и должен выглядеть
        но на кой ляд, сравнивая два size_type (вероятно, 64-битных), получать 32-битный int в виде их разницы...
        Ответить
        • Накой ляд использовать __gnu_cxx::__numeric_traits, когда есть стандартный std::numeric_limits.
          Ответить
          • Ну, видимо, std::numeric_limits выражен через __gnu_cxx::__numeric_traits, а т.к. этот код внутренний, то он и юзает внутренние типы...

            P.S. __или_просто::__слишком_мало<подчеркиваний>::__в_тексте.
            Ответить
              • Вот сделали бы для целочисленных типов также через энум по стандарту, чтобы max был известен во время компиляции.
                Ответить
                  • Да в старом стандарте могли бы сделать static const integral_type max=...;. А то приходится в рантайме вместо компайлтайма проверять граничное условие, так как в std::numeric_limits функция.
                    Я даже за если бы это был отдельный трейт для целых типов типа std::integral_limits или std::integer_limits, кроме стандартного с функциями.

                    В итоге в gcc с его numeric_traits так и сделали как я говорю, но стандарт неумолим, так что в своем коде этим пользоваться нельзя, поэтому приходится компайлтайм проверки переносить в рантайм. Глупо.
                    Ответить
                      • Небось по памяти стандарт уже цитируешь. Тебе в интел нужно идти, а не на говнокоде сидеть. Кстати, говорят его купил эпл?
                        Ответить
                        • нет, говнокод никто не купил, он бесценный
                          в стандарт лезу только когда надо найти ответы на твои вопросы
                          Ответить
                        • >Небось по памяти стандарт уже цитируешь.
                          Дописывает свой стандарт, отвечая на вопросы юзверей.
                          Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8