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

    +5

    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
    24. 24
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    class complex_binary_compose: public std::binary_function<BinaryFunc1::first_argument_type,
    														  BinaryFunc1::second_argument_type,
    														  ResultBinaryFunc::result_type>
    {
    public:
    	complex_binary_compose(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2) :
    	  _bf(BF), _f1(UF1), _f2(UF2) {}
    	result_type operator()(first_argument_type arg1, second_argument_type arg2)
    	{
    		return _bf(_f1(arg1, arg2), _f2(arg1, arg2));
    	}
    private:
    	ResultBinaryFunc _bf;
    	BinaryFunc1 _f1;
    	BinaryFunc2 _f2;
    };
    
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>
    	complex_compose2(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2)
    {
    	return complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>(BF, UF1, UF2);
    }

    Чтобы было удобно применять stl алгоритмы.

    laMer007, 10 Июня 2014

    Комментарии (93)
  2. C++ / Говнокод #16139

    +8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    # ifndef BOOST_NO_PARTIAL_SPECIALIZATION
          , check<Model>
    # else
          , check<failed ************ Model::************>
    # endif

    LispGovno, 10 Июня 2014

    Комментарии (1)
  3. C++ / Говнокод #16124

    +58

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Poor man' link time code generation:
    
    #include "main.cpp"
    #include "frame.cpp"
    #include "func.cpp"
    #include "account.cpp"
    #include "advancer.cpp"
    #include "audit.cpp"
    #include "cpio.cpp"
    
    g++ -whole-program -o my books.exe -O3 includeall.cpp

    http://blogs.msdn.com/b/oldnewthing/archive/2014/06/06/10531604.aspx

    someone, 07 Июня 2014

    Комментарии (5)
  4. C++ / Говнокод #16122

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    typedef SmartPtr<CallRec> callptr;
    
    callptr *m_call;
    
    if (m_call && (*m_call) && (*m_call)->SomeMethod()) {
        // ...
    }

    GnuGK и смартпоинтеры.

    bormand, 06 Июня 2014

    Комментарии (75)
  5. C++ / Говнокод #16111

    +13

    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
    24. 24
    #define _BEGIN_LOCK(_Kind) \
    	{ \
    		typedef int _TmpTestType; \
    		__if_exists(_TmpTestType::ToString) \
    		{ \
    		bool _MustReleaseLock = false; \
    		int _LockKind = _Kind; \
    		System::Runtime::CompilerServices::RuntimeHelpers::PrepareConstrainedRegions(); \
    		try \
    		} \
    		{ \
    			__if_exists(_TmpTestType::ToString) \
    			{ \
    			System::Runtime::CompilerServices::RuntimeHelpers::PrepareConstrainedRegions(); \
    			try { } _M_CEE_FINALLY \
    			{ \
    				_STD _Lockit::_Lockit_ctor(_LockKind); \
    				_MustReleaseLock = true; \
    			} \
    			} \
    			__if_not_exists(_TmpTestType::ToString) \
    			{ \
    			_STD _Lockit _Lock(_Kind); \
    			}

    gost, 04 Июня 2014

    Комментарии (0)
  6. C++ / Говнокод #16106

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    ~Guard(){
      if(std::uncaught_exception())
        try{
        }catch(...){
          error_output<<"prevented exception!!!"<<endl;
        };
    }

    LispGovno, 03 Июня 2014

    Комментарии (37)
  7. C++ / Говнокод #16094

    +8

    1. 1
    2. 2
    #define FOR_INCLUSION (iostream) (studio.h) (stdlib.h) (boost/phoenix.hpp) (my_drugs_library.h)
    #include <include_and_disable_some_warnings>

    laMer007, 01 Июня 2014

    Комментарии (19)
  8. C++ / Говнокод #16081

    +5

    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
    #include <iostream>
    using namespace std;
    struct ko{
    	int r;
    } f;
    const ko& taras=f;
    int main() {
    	cout<<
    	is_same<decltype(taras.r), int>::value
    	<<" "<<
    	is_same<decltype((taras.r)), const int &>::value
    	<<endl;
    	return 0;
    }

    What is output you expect? You should answer without looking at ideone link and without using compiler.
    http://ideone.com/5O9vtZ

    LispGovno, 30 Мая 2014

    Комментарии (2)
  9. C++ / Говнокод #16080

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    const int cx = 5;
    int main() {
    	auto lam = [cx]() mutable {cx=40;};
    	return 0;
    }

    Will it compile or not? Why?
    http://ideone.com/gtlXKb

    LispGovno, 30 Мая 2014

    Комментарии (7)
  10. 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)