1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #16244

    +9

    1. 1
    2. 2
    // инверсия цвета
    n ~= n;

    Было в шаблоне, довольно долго. Сегодня впервые метод был использован... Минут пять втыкал, почему не хочет компилировать.
    Всё-равно пришлось заменить на n = 0xFFFFFF ^ n, потому что старший байт нужно было неизменным оставлять.

    Little-Horny, 27 Июня 2014

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

    +9

    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
    25. 25
    26. 26
    27. 27
    template<...many params...>
    class Foo
    {
      template <typename T>
      class __Bar 
      {
        T t;
      public :
        __Bar(T t) : t(t) {}  
      };
    
    public :
      template <typename T>
      __Bar<T> Bar(T t)
      {
        return __Bar<T>(t); // просто __Bar(t) нельзя, вывод не сработает
      }
    
      template <typename T>
      void Buzz (T t)
      {
      }
    };
    
    ...
    Foo f;
    f.Buzz(Bar(5));

    А как вы выкручиваетесь из неумения определять тип результата по типу параметров конструктора?

    TarasB, 15 Апреля 2014

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

    +9

    1. 1
    BOOST_FOREACH(auto &v, pt.get_child("root"))

    Код компилируется и написан таким изначально. Но судя по всему использует копипаст из примеров.

    laMer007, 14 Апреля 2014

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

    +9

    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
    class t_item{
    public:
    #define DEF_PRO_STRUCT_INFO(NAME,PARENT,OWNER)NAME(t_item)
    #define DEF_PRO_VARIABLE(ADDBEG,ADDVAR,ADDEND)\
    ADDBEG()\
    ADDVAR(0,string,name,DEF,$,$)\
    ADDVAR(1,int,next,SET,0,$)\
    ADDEND()
    //=====+>>>>>t_item
    #include "QapGenStruct.inl"
    //<<<<<+=====t_item
    public:
    };

    LispGovno, 12 Апреля 2014

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

    +9

    1. 1
    #define  FindElem( L )   _FindElem( [=] (VEC4 iter) -> bool  {  return (L);  } )

    На что только не пойдут люди, чтобы писать

    VEC4* pv = vecs.FindElem( iter.x==1.0f );

    laMer007, 07 Апреля 2014

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

    +9

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    #include <iostream>
    #include <iterator>
    #include <algorithm>
    #include <array>
    #include <memory>
    using namespace std;
    
    template<size_t N1, size_t N2, class T1, class T2,
    class T = typename common_type<T1, T2>::type>
    T (*concatCArray(const T1(&arr1)[N1], const T2(&arr2)[N2]))[N1+N2]{
      const auto result = (T(*)[N1+N2]) new T[N1+N2];
      copy(arr2, end(arr2), copy(arr1, end(arr1), *result));
      return result;
    }
    template<std::size_t N, class T>
    void viewCArrayPtr(T (*arr)[N]){
      copy(*arr, end(*arr), ostream_iterator<T>(cout, " "));
    }
    template<size_t N1, size_t N2, class T1, class T2,
    class T = typename remove_const<typename common_type<T1, T2>::type>::type>
    array<T, N1+N2> concatArray(const array<T1, N1> &arr1, const array<T2, N2> &arr2){
      array<T, N1+N2> result;
      copy(begin(arr2), end(arr2), copy(begin(arr1), end(arr1), result.begin()));
      return result;
    }
    template<std::size_t N, class T>
    void viewArray(const array<T, N> arr){
      copy(begin(arr), end(arr), ostream_iterator<T>(cout, " "));
    }
    
    int main() {
      int arr1[]{0,1,2,3}, arr2[]{4,5,6};
      auto ca = concatCArray(arr1, arr2);
      unique_ptr<int[]> safe(*ca);
      viewCArrayPtr(ca);
      cout<<endl;
      array<float, 2> a {1,2.5};
      array<int, 3> b{3, 4, 5};
      viewArray(concatArray(a, b));
      return 0;
    }

    От туда.
    http://ideone.com/3KjycI

    LispGovno, 22 Января 2014

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

    +9

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    /** фрагмент 0 */ 
    buff[symbols]=0;
    printf ("%s\n",buff);	 
    
    if (strcmp (buff,"Yes!") != 0)
        exit (1);
    
    strcpy (buff,"");	  
    sprintf (buff,"%s","File_size?");
    printf ("%s\n",buff);
    
    /** фрагмент 1 */ 
    Par2 = 0;
    		  if (number_packet < 10)
    			  Par2 = 1;
    		  else
    			  if (number_packet < 100)
    			    Par2 = 2;
    			  else
    				  if (number_packet < 1000)
    			        Par2 = 3;
    				  else
    					  if (number_packet < 10000)
    			             Par2 = 4;
    					  else
    						  if (number_packet < 100000)
    			                 Par2 = 5;
    						  else
    							  if (number_packet < 1000000)
    			                     Par2 = 6;
    							  else
    								  if (number_packet < 10000000)
    			                        Par2 = 7;
    		  Par2++;

    2 фрагмента лабораторной работы

    dannikonov, 24 Декабря 2013

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

    +9

    1. 1
    #   define BOOST_MPL_AUX_NTTP_DECL(T, x) T x

    Очень интересный стайлгайд Алексей Гуртового

    crastinus, 07 Декабря 2013

    Комментарии (25)
  10. C++ / Говнокод #14194

    +9

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    int numBlock = 0;
        for(int i = 0; i < 16; i++)
            for(int j = 0; j < 25; j++)
            {
    
            if(levelInfo[i][j].active)
            {
            if(levelInfo[i][j].part && levelInfo[i][j].type) continue;
            if(levelInfo[i][j].type)
            {
                tempLevel[numBlock*8  ] = i*24;
                tempLevel[numBlock*8+1] = (j)*24;
                tempLevel[numBlock*8+2] = (i+2)*24;
                tempLevel[numBlock*8+3] = (j)*24;
                tempLevel[numBlock*8+4] = (i+2)*24;
                tempLevel[numBlock*8+5] = (j+1)*24;
                tempLevel[numBlock*8+6] = i*24;
                tempLevel[numBlock*8+7] = (j+1)*24;
            }
            else
            {
                tempLevel[numBlock*8  ] = i*24;
                tempLevel[numBlock*8+1] = (j)*24;
                tempLevel[numBlock*8+2] = (i+1)*24;
                tempLevel[numBlock*8+3] = (j)*24;
                tempLevel[numBlock*8+4] = (i+1)*24;
                tempLevel[numBlock*8+5] = (j+1)*24;
                tempLevel[numBlock*8+6] = i*24;
                tempLevel[numBlock*8+7] = (j+1)*24;
            }
    
            if(levelInfo[i][j].type)
                for(int k = 0; k < 8; k++) tempTex[numBlock*8+k] = coord[0][k];
            else
                for(int k = 0; k < 8; k++) tempTex[numBlock*8+k] = coord[1][k];
            }
            else
            {
            tempLevel[numBlock*8  ] = i*24;
            tempLevel[numBlock*8+1] = (j)*24;
            tempLevel[numBlock*8+2] = (i+1)*24;
            tempLevel[numBlock*8+3] = (j)*24;
            tempLevel[numBlock*8+4] = (i+1)*24;
            tempLevel[numBlock*8+5] = (j+1)*24;
            tempLevel[numBlock*8+6] = i*24;
            tempLevel[numBlock*8+7] = (j+1)*24;
            for(int k = 0; k < 8; k++) tempTex[numBlock*8+k] = coord[2][k];
            }
            numBlock++;
            }
    
        for(int i = 0; i < 2; i++)
            for(int j = 0; j < 3; j++)
            {
                if(!fallBlocks[i][j].active) continue;
                if(fallBlocks[i][j].part && fallBlocks[i][j].type) continue;
                if(!fallBlocks[i][j].type)
                {
                    tempLevel[numBlock*8  ] = (fallPosX+i)*24;
                    tempLevel[numBlock*8+1] = (fallPosY-j)*24;
                    tempLevel[numBlock*8+2] = (fallPosX+i+1)*24;
                    tempLevel[numBlock*8+3] = (fallPosY-j)*24;
                    tempLevel[numBlock*8+4] = (fallPosX+i+1)*24;
                    tempLevel[numBlock*8+5] = (fallPosY-j+1)*24;
                    tempLevel[numBlock*8+6] = (fallPosX+i)*24;
                    tempLevel[numBlock*8+7] = (fallPosY-j+1)*24;
                    for(int k = 0; k < 8; k++) tempTex[numBlock*8+k] = coord[1][k];
                }
                else
                {
                    tempLevel[numBlock*8  ] = (fallPosX+i)*24;
                    tempLevel[numBlock*8+1] = (fallPosY-j)*24;
                    tempLevel[numBlock*8+2] = (fallPosX+i+2)*24;
                    tempLevel[numBlock*8+3] = (fallPosY-j)*24;
                    tempLevel[numBlock*8+4] = (fallPosX+i+2)*24;
                    tempLevel[numBlock*8+5] = (fallPosY-j+1)*24;
                    tempLevel[numBlock*8+6] = (fallPosX+i)*24;
                    tempLevel[numBlock*8+7] = (fallPosY-j+1)*24;
                    for(int k = 0; k < 8; k++) tempTex[numBlock*8+k] = coord[0][k];
                }
                numBlock++;
            }

    Нямка. В унитаз уже не помещается, вылью сюда

    pelmenka, 07 Декабря 2013

    Комментарии (17)
  11. C++ / Говнокод #14175

    +9

    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    // fib.h
    #pragma once
    using ull = unsigned long long;
    
    inline constexpr ull fib(size_t n, ull first, ull second) {
      return n == 0 ? first : fib(n - 1, second, first + second);
    }
    
    inline constexpr ull fib(size_t n) {
      return fib(n, 0, 1);
    }
    // fibs.h
    #pragma once
    #include "fib.h"
    #include <array>
    
    enum class fibs : ull {
    #define FIB(i, val) fib##i = val,
    #define COUNT(val) COUNT = val
    #include "fibs.inl"
    #undef COUNT
    #undef FIB
    };
    
    std::array<ull, static_cast<size_t>(fibs::COUNT)> const & fibs_values() {
      static std::array<ull, static_cast<size_t>(fibs::COUNT)> values = {
    #define FIB(i, val) val,
    #define COUNT(val)
    #include "fibs.inl"
    #undef COUNT
    #undef FIB
      };
      return values;
    }
    // main.cpp
    #include "fibs.h"
    #include <iostream>
    
    int main() {
      using namespace std;
      for (auto fib : fibs_values()) {
        cout << fib << "," << endl;
      }
      return 0;
    }
    // fibs.inl = gen.exe > fibs.inl
    // gen.cpp
    #include "fib.h"
    #include <iostream>
    
    int main() {
      using namespace std;
      size_t i;
      for (i = 0; i < 94; i++) {
        cout << "FIB(" << i << ", " << fib(i) << ")" << endl;
      }
      cout << "COUNT(" << i << ")";
      return 0;
    }

    LispGovno, 04 Декабря 2013

    Комментарии (48)