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

    +3

    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
    #define BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(TRAITS_PREFIX, TYPEDEF_TO_FIND) \
    template <class T>\
    struct TRAITS_PREFIX##_bool\
    {\
       template<bool Add>\
       struct two_or_three {one _[2 + Add];};\
       template <class U> static one test(...);\
       template <class U> static two_or_three<U::TYPEDEF_TO_FIND> test (int);\
       static const std::size_t value = sizeof(test<T>(0));\
    };\
    \
    template <class T>\
    struct TRAITS_PREFIX##_bool_is_true\
    {\
       static const bool value = TRAITS_PREFIX##_bool<T>::value > sizeof(one)*2;\
    };\
    //

    Ну тут как бы все просто и понятно. Но зачем заканчивают макрос кодом

    \
    //
    ?

    Запостил: laMer007, 29 Мая 2014

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

    • Ответить
    • > зачем заканчивают макрос кодом \ //
      Видимо для однородности. При таком стиле добавленная строчка даст в диффе только одну строку, а не две (новую и строчку выше нее, к которой допишут \), ну и забыть дописать \ сложнее:
      + another_shit \
      
      // vs
      
      - };
      + }; \
      + another_shit
      Ответить
      • Для однородности еще бы один обратный слеш не помешал в конце. Как разрешенная запятая для энумов в конце списка перечислений. Типа для упрощения автоматических генераций.
        Ответить

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