1. C++ / Говнокод #4197

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING344 : boost::mpl::assert_ {
    
      static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) {
        return 0;
      }
    } mpl_assert_arg344;
    
    typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING375 : boost::mpl::assert_ {
    
      static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) {
        return 0;
      }
    } mpl_assert_arg375;
    
    template< typename Pred >
    failed ************ (Pred::************
      assert_arg(void (*)(Pred), typename assert_arg_pred<Pred>::type)
      );
    
    template< typename Pred >
    failed ************ (boost::mpl::not_<Pred>::************
      assert_not_arg(void (*)(Pred), typename assert_arg_pred_not<Pred>::type)
      );

    В том что boost'овские библиотеки достаточно хорошо оптимизированы я не сомневаюсь, но от некоторых конструкций я просто охреневаю...

    Запостил: rudvil, 08 Сентября 2010

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

    • Ссылочку бы на исходник
      Ответить
      • Это результат обработки препроцессором строчки
        BOOST_MPL_ASSERT_MSG( (!is_char_array<T>::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_ST RING, (T&) );

        из foreach.hpp

        На каждое использование BOOST_FOREACH будет отдельный инстанс ассерта.
        Ответить
    • я в cpp не силен, но мне кажется что это писал какой-то генератор кода. Тоесть люди не пишут mpl_assert_arg375.

      А раз так -- то не ГК.
      Ответить
    • Насчет странных цифр верно, этот код я получил из g++ с флагом -E, но имелись ввиду не цифры, а большое кол. указателей(имхо это г.к.), которые можно найти в "boost\mpl\assert.hpp : 153, 158" и далее...
      Ответить
    • Автор, почитай сначала Александреску чтоли, там написано, что это такое.
      Ответить
      • Обобщённое программирование, фигли.
        Ответить
      • ололо, не в курсе, что ваши ональные с++ боги обсирают друг друга.. =)
        Степанов: "Не читайте Александреску. Читайте Евклида. Не думайте, что синтаксис может решить проблемы семантики. Чтобы вы ни делали, думайте о великом."
        Ответить
    • это "скайнет"
      Ответить

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