1. Список говнокодов пользователя LispGovno

    Всего: 223

  2. C++ / Говнокод #14502

    +46

    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
    //Сом ненужный щит
    
    #include <iostream>
    using namespace std;
    
    #include <string>
    #include <iostream>
    
    struct Tracer {
       Tracer(void)
          :m_name("(none)")
       {
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
       }
       Tracer(const std::string & name)
          :m_name(name)
       {
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
       }
       Tracer(const Tracer & other)
          :m_name(other.m_name)
       {
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
       }
       Tracer(const Tracer && other)
          :m_name(other.m_name)
       {
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
       }
       Tracer & operator=(const Tracer & other) {
          m_name = other.m_name;
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
          return *this;
       }
       Tracer & operator=(const Tracer && other) {
          m_name = other.m_name;
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
          return *this;
       }
       ~Tracer() {
          std::cout << "[" << m_name << "]    " << __PRETTY_FUNCTION__ << std::endl;
          m_name="You looser!";
       }
    
       std::string m_name;
    };
    
    //Тот щит, ради чего всё затевалось
    
    template<class T> const T&  Min(const T &x, const T &y) { return (x.m_name < y.m_name) ? x : y; }
    
    int main() {
      const Tracer& mr = Min(Tracer("a"), Tracer("b"));
      cout<<"Some work with mr: "<<mr.m_name<<endl;
      return 0;
    }

    [b] Tracer::Tracer(const string&)
    [a] Tracer::Tracer(const string&)
    [a] Tracer::~Tracer()
    [b] Tracer::~Tracer()
    Some work with mr:

    Этож сколько я коммитов сделал с возвратом константной ссылки на константный параметр.

    LispGovno, 04 Февраля 2014

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

    +36

    1. 1
    2. 2
    3. 3
    t = Min(::std::cref(x), ::std::cref(y));
    //или в зависимости от ситуации 
    t = Min(::std::move(x), ::std::move(y));

    Абстракционизм или Кубизм?

    LispGovno, 04 Февраля 2014

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

    +31

    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
    #include <string>
    #include <iostream>
    #include <functional>
     
    using namespace std;
    
    template<class L, class... Ls>
    struct OL: L, OL<Ls...>{
       OL(const L& l, const Ls&... ls): L(l), OL<Ls...>(ls...){}
       using L::operator();
       using OL<Ls...>::operator();
    };
    
    template<class L1, class L2>
    struct OL<L1, L2>: L1, L2{
       OL(const L1& l1, const L2& l2): L1(l1), L2(l2){}
       using L1::operator();
       using L2::operator();
    };
    
    
    template<class... Ls>
    OL<Ls...> OverloadLambda(const Ls&... l){
       return OL<Ls...>(l...);
    }
    
    template<class L>
    L OverloadLambda(const L& l){
       return l;
    }
    
    void OverloadLambda(void) = delete;
    
    int main() {
       int i=5;
       auto lambda=OverloadLambda(  [=](int v){cout<<__func__<<" "<<i<<" "<<v<<" int"<<endl;},
                                    [=](string v){cout<<__func__<<" "<<i<<" "<<v<<" string"<<endl;},
                                    [=](float v){cout<<__func__<<" "<<i<<" "<<v<<" float"<<endl;});
       lambda(0);
       lambda("Hello");
       lambda(1.0f);
       i=600;
       auto lambda1=OverloadLambda( [=](int v){cout<<__func__<<" "<<i<<" "<<v<<" int"<<endl;});
       lambda1(4);
       ///*auto lambda0 =*/ OverloadLambda();
       return 0;
    }

    Специальная олимпиада объявляется открытой!
    http://ideone.com/y14z5Y
    Там много другого кода и какой-то из старых тем, а мне лень весь облазить.

    LispGovno, 03 Февраля 2014

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

    +33

    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
    template<typename F, typename... Fns>
    struct Overloaded
    {
      std::tuple<F,Fns...> fns;
      
      // эта и следующая за ней функция нужны для рекурсивного
      // накопления кортежа из всех входящих функций
      template<typename First, typename... Others>
      std::tuple<First,Others...> collect(First f, Others... others) {
        auto t = std::make_tuple(f);
        return std::tuple_cat(t, collect(others...));
      }
      template<typename Single>
      std::tuple<Single> collect(Single f) {
        return std::make_tuple(f);
      }
      
      Overloaded(F f, Fns... others) {
        // сохраняем кортеж функций
        fns = collect(f, others...);
      }
    };
    
    template<typename F, typename... Fns>
    Overloaded<F,Fns...> make_overloaded(F f, Fns... fns) {
      return Overloaded<F,Fns...>(f,fns...);
    }
    
    //...
    
    void F1(int) {}
    void F2(int, float) {}
    // ...
    auto f = make_overloaded(F1, F2);

    Не хочется связываться с бустом ввиду его убогости громоздкости. Поэтому пытаюсь сделать сам на чистом C++11 без макросов.
    Не понятно теперь как перегрузить оператор ()?
    Задействовать enable_if? Ни чего в голову не приходит.
    Есть у кого идеи?

    Оттуда

    LispGovno, 03 Февраля 2014

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

    +24

    1. 1
    int f(int = 7, int * = nullptr, int (*(*)(double))[3] = nullptr){

    http://ideone.com/BcZ7Ja

    LispGovno, 02 Февраля 2014

    Комментарии (36)
  7. Куча / Говнокод #14466

    +127

    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
    Привет! 
    Сообщество, посмотри C++11 код, а не ошибочно ли выбраны символы для обжатия шаблонных параметров. 
    <сказка> 
    
    Итак, жили-были две функции: 
    
    void func0(bool=false); //ok
    void func1(bool=8>=8);  //ok
    
    И на лексемы разбирались они успешно и без конфликтов.
    
    И был у них друг помошник: 
    
    #define F(TYPE,NAME,VALUE)TYPE NAME=VALUE;
    F(int,value,0);
    #undef F
    
    Лексер и его на лексемы разбирал.
    
    Но пришли злые шаблоногородители и по нагородили шаблонов...
    
    Нагородили шаблонные структуры типа таких: 
    
    template<bool>struct a{constexpr a(bool){}};
    
    и переменные типа таких: 
    
    a<0> var=0;
    map<int,int> m;
    
    А лексер всё стоял и терпел. Он всё успешно на лексемы разбирал.
    
    Но радилась как-то в коде функция типа такой: 
    
    void func2(a<0>=8>=8); // fail
    
    И не выдержал лексер: 
    
    prog.cpp:4:18: warning: comparisons like ‘X<=Y<=Z’ do not have their mathematical meaning [-Wparentheses]
     void func2(a<0>=8>=8); // fail
                      ^
    prog.cpp:4:12: error: parse error in template argument list
     void func2(a<0>=8>=8); // fail
                ^ 
    
    Не понял он что хотят от него. 
    
    void func2(a<0> = 8>=8 ); // это?
    void func2(a< 0>=8 > =8); // или это?
    
    ... да как же вам объяснить? 
    А давайте я заменю "<" на "{", а ">" на "}".
    
    И не понял лексер, что хотят от него. 
    
    void func2(a{0}=8>=8); // это?
    void func2(a{0>=8}=8); // или это?
    
    А потом уродилось в коде ещё и это: 
    
    #define F(TYPE,NAME,VALUE)TYPE NAME=VALUE;
    F(a<0>,var,0); //ok
    #undef F
    
    Но лексер терпел.
    
    Терпел, да не выдержал. 
    
    #define F(TYPE,NAME)TYPE NAME;
    F(map<int,int>,m); //fail
    #undef F
    
    Решил он забить на дело гиблое: 
    
    prog.cpp:7:17: error: macro "F" passed 3 arguments, but takes just 2
     F(map<int,int>,m); //fail
                     ^
    И ужёл он к другим стандартописателям. 
    </сказка> 
    tags: черновик, сказка, С++11, шаблоны, макросы, лексер

    Символы для обжатия параметров шаблонов выбраны ошибочно?

    LispGovno, 02 Февраля 2014

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

    +15

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #define TEST_MODE ON
    
    ...
    
    #ifdef TEST_MODE
    #    include "fake_singelton.h"
    #else
    #    include "work_singelton.h"
    #endif

    оттуда

    LispGovno, 01 Февраля 2014

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

    +20

    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
    Ini ini(m_serviceProvider);
            if( ini.load( gameInputStream ) == false )
            {
                LOGGER_ERROR(m_serviceProvider)("StartupConfigLoader::loadGame_ Invalid load game settings '%s'"
                    , _gameIniPath.c_str()
                    );
    
                return false;
            }
    
        IniUtil::getIniValue( ini, "Project", "Name", _settings.projectName, m_serviceProvider );
        IniUtil::getIniValue( ini, "Project", "Company", _settings.companyName, m_serviceProvider );
        IniUtil::getIniValue( ini, "Project", "Codename", _settings.applicationSettings.projectCodename, m_serviceProvider );
        IniUtil::getIniValue( ini, "Project", "Version", _settings.applicationSettings.projectVersion, m_serviceProvider );
        IniUtil::getIniValue( ini, "Locale", "Default", _settings.defaultLocale, m_serviceProvider );
        IniUtil::getIniValue( ini, "Game", "ContentResolution", _settings.applicationSettings.contentResolution, m_serviceProvider );     
        IniUtil::getIniValue( ini, "Game", "FixedContentResolution", _settings.applicationSettings.fixedContentResolution, m_serviceProvider );
        IniUtil::getIniValue( ini, "Game", "PersonalityModule", _settings.personalityModule, m_serviceProvider );
        IniUtil::getIniValue( ini, "Game", "AlreadyRunning", _settings.alreadyRunning, m_serviceProvider );
        IniUtil::getIniValue( ini, "Game", "WindowModeCheck", _settings.applicationSettings.windowModeCheck, m_serviceProvider );
        IniUtil::getIniValue( ini, "Window", "Size", _settings.applicationSettings.windowResolution, m_serviceProvider );
        IniUtil::getIniValue( ini, "Window", "Bits", _settings.applicationSettings.bits, m_serviceProvider );
        IniUtil::getIniValue( ini, "Window", "Fullscreen", _settings.applicationSettings.fullscreen, m_serviceProvider );
            IniUtil::getIniValue( ini, "Window", "MaxFPS", _settings.maxfps, m_serviceProvider );
        IniUtil::getIniValue( ini, "Window", "VSync", _settings.applicationSettings.vsync, m_serviceProvider );

    Это оттуда уже другой. Они все сговорились что-ли? Ынтерпрайз головного мозга.
    PS: boost::property_map не осилил.

    LispGovno, 31 Января 2014

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

    +4

    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
    struct ServiceProvider1
    {
      ServiceProvider1(Service2& service1, Service3& service2, Service3& service3, Service4& service4, Service5& service5):
        service1(service1),
        service2(service2),
        service3(service3),
        service4(service4),
        service5(service5),
     {}
    
      fun<Service1> service1;//fun - функциональный объект (operator() перегружен), хранящий ссылку на сервис, чтобы не писать кроме членов ещё и две функции - константную и не константную.
      fun<Service2> service2;
      fun<Service3> service3;
      fun<Service4> service4;
      fun<Service5> service5;
    };
    
    class Service1
    {
    public:
      template<class ServiceProvider> 
      Service1(ServiceProvider serviceProvider):
        service2(serviceProvider.service2()),//Ссылки на сервисы получаем.
        service3(serviceProvider.service3()),
        myMember1(serviceProvider),//эти мемберы сами внутри воспользуются провайдерами зависимостей
        myMember2(serviceProvider),
        myMember3(),
        myMember4(myServiceProviderGeter<ServiceProvider>()),//Этому мембору понадобились новые зависимости, часть тех, что хранятся в ServiceProvider, а часть новых среди членов Service1.
        myMember5(myServiceProviderGeter<ServiceProvider>())
        myMember6(myServiceProviderGeter<ServiceProvider>())
      {}
      ...
    private:
      template<class BaseServiceProvider>
      struct MyServiceProvider: BaseServiceProvider
        {
           MyServiceProvider(BaseServiceProvider baseServiceProvider, Service6& service6, Service7& service7):
             BaseServiceProvider(baseServiceProvider),
             service6(service6),
             service7(service7)
           {}
           
           fun<Service6> service6;
           fun<Service7> service7;
        };
    
      template<class BaseServiceProvider> MyServiceProvider<BaseServiceProvider> myServiceProviderGeter(BaseServiceProvider baseServiceProvider) const
      {
        return MyServiceProvider<BaseServiceProvider>(baseServiceProvider, this->myMember2, this->myMember3);
      }
    };
    ...
    ServiceProvider1 sp(...);
    Servive1 service1(sp);
    Service8 service8(sp);
    Service9 service9(sp);
    ...

    оттуда

    LispGovno, 31 Января 2014

    Комментарии (146)
  11. Куча / Говнокод #14443

    +126

    1. 1
    2. 2
    3. 3
    4. 4
    @echo off
    chcp 1251
    mygame.exe
    chcp 866

    Оттуда.

    LispGovno, 30 Января 2014

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