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

    +10

    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
    //В mathc.hpp:
    typedef float import (float);
    
    //В неком cpp функция:
    float cm() {
            import calcFpu;
           //...
            float src = //...
            float res = calcFpu(src);
            return res;
    }
    
    //В mathc.cpp:
    void calcFpu(float){
    //...
    void calcSSE(float){
    //...

    Мои глаза... В перлы.
    http://ideone.com/RBAMyv

    LispGovno, 27 Ноября 2012

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

    +77

    1. 1
    delete[] Memory, leak; //Унарные операторы, такие уринарные.

    Былинный отказ.

    igumnovf, 23 Ноября 2012

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

    +15

    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
    #include <iostream>
    #include <functional>
     
    template<class Container, class F, class A>
    auto accumulate(Container c, F f, A acc) -> A
    {
      auto id = [](const A& a) -> const A& {return a;};
      typedef decltype(std::begin(c)) Iterator;
      const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt = 
      [&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
      {
        if(lst==c.end())
          return cont(acc);
        else
        {
          auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
          return doIt(lst+1, conter);
        }
      };
      return doIt(std::begin(c), id);
    }
     
    int main() {
            std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
            return 0;
    }

    Похоже написал какой-то монадолог.
    http://ideone.com/y4Dm9z
    Пример использования accumulate сам накатал.
    Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
    http://ideone.com/XWfuoP
    Я убежден, что эта функция должна была выглядеть как-то так:

    template<class Container, class F>
    accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
    {
    return std::accumulate(c.begin(), c.end(), acc, f);
    }
    //Вызов этой функции:
    accumulate({1,2,3,4});

    Ну и я погуглил на тему этого говнокода и нашел на функциональном языке похожий:
    let fold_right func acc list =
    let rec loop list cont = //сюда мы передаем текущую функцию континуации
    match list with
    |[] -> cont acc //а вот и наше ключевое вычисление.
    |head::tail -> loop tail (fun racc -> cont (func head racc))
    loop list (fun x -> x)

    LispGovno, 23 Ноября 2012

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

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    #include <iostream>
     
    int main() {
        std::cout << (2,0 * 2,5) << std::endl;   // 5
        std::cout << (0,625 * 6,4) << std::endl; // 4
        std::cout << (2,5 * 2,0) << std::endl;   // 5?
        return 0;
    }

    Почему в с++ умножение некоммутативно?

    http://ideone.com/Erp3uv

    bormand, 21 Ноября 2012

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

    +16

    1. 1
    2. 2
    3. 3
    //...
       ret.value(_val != "" ? _val : "");
    //...

    bodeaux, 21 Ноября 2012

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

    +21

    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
    //Было:
    int foo()//                              ;
    {                                        ;  
        int a                                ;
        float b                              ; //В правой части старые 
        typedef int testing                  ; //полезные комментарии
        std::cout << "Ho-ho-ho"              ;
        a=0                                  ;
        b=1.0f                               ;
        if (a==b)//                          ;
        {                                    ;
            std::cout <<"Yet another caption";
            std::cout <<"Hi-hi-hi"           ;
            bar()                            ;
                                             ;
        }                                    ;
        using namespace std                  ;
        for (int i =0;i<10;i++)//            ;
        {                                    ;
                                             ;
            std::cout <<"Hello, world!"      ;
            std::cout <<"Yet another line"   ;
        }                                    ;
        return 0                             ;
                                             ;
    }                                        ;
    
    //Кто-то что-то решил поменять
    //Стало:
    int foo()//                              ;
    {                                        ;  
        int a                                ;
        float b                              ; //В правой части старые 
        typedef int testing                  ; //полезные комментарии
        std::cout << "Ho-ho-ho"              ;
        a=0                                  ;
        b=1.0f                               ;
        if (a==b)//                          ;
        {                                    ;
            std::cout <<"Yet another caption";
            std::cout <<"Hi-hi-hi"           ;
            bar()                            ;
                                             ;
        }                                    ;
        double c;
        //Слева комментарии требующие
        //проверки. Wtf???Зачем здесь с???    
        using namespace std                  ;
        for (int i =0;i<10;i++)//            ;
        {                                    ;
                                             ;
            std::cout <<"Hello, world!"      ;
            std::cout <<"Yet another line"   ;
        }                                    ;
        return 6666                             ;
                                             ;
    }                                        ;
    
    //Быстро определили по линии из точек c
    //запятой место в котором произошло изменение.
    //Если согласились с ним восстанавливаем линию.

    Бесплатная распределенная говносистема контроля версий. Git и SVN нервно курят в сторонке.

    igumnovf, 20 Ноября 2012

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

    +23

    1. 1
    2. 2
    typedef const AbstractParameter ConstAbstractParameter;
    class Parameter: public ConstAbstractParameter{

    GCC это не компилирует, но в 2008 ms vs компилируется без предупреждений. Я это как увидел, так сразу переписал на

    class Parameter: public AbstractParameter{

    А вот теперь я дома и не могу заснуть. Гложет чувство, что я поступил не правильно. Такое чувство как-будто этот const, пусть и не в рамках стандарта С++, но что-то он делал.

    LispGovno, 20 Ноября 2012

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

    +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
    class A
    {
    public:
            A () : p (new SomeType)
            {
                    assert ("It must be non-zero" && p);
            }
            ~A ()
            {
                    Box <SomeType> deleter (p);
                    p = 0;
            }
    private:
            SomeType *p;
    };

    А вот и применение класса Box

    Setry, 19 Ноября 2012

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

    +22

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    class ClassA 
    {
    };
    class ClassB : private ClassA
    {
    public:
    	ClassA& AsClassA()
    	{
    		return *this;
    	}
    };

    Setry, 19 Ноября 2012

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

    +22

    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
    template<class T>
    class Box
    {
    private:
    	explicit Box(const Box&);
    	Box& operator = (const Box&);
    public:
    	explicit Box()
    		: m_value(0)
    	{}
    	explicit Box(T* value)
    		: m_value(value)
    	{}
    	~Box()
    	{
    		std::auto_ptr <T> toDelete(m_value);
    	}
    	T* Release()
    	{
    		T* const result(m_value);
    		m_value = 0;
    		return result;
    	}
    	void Reset(T* value)
    	{
    		std::auto_ptr <T> toDelete(m_value);
    		m_value = value;
    	}
    private:
    	T* m_value;
    };

    Setry, 19 Ноября 2012

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