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

    +149

    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
    #include <iostream>
    
    struct empty_struct{};
    
    template<char S, typename N>
    struct char_type
    {
    	static const char value = S;
    	typedef N next;
    };
    
    typedef
    	char_type<'h', 
    	char_type<'e',
    	char_type<'l',
    	char_type<'l',
    	char_type<'o',
    	char_type<' ',
    	char_type<'w',
    	char_type<'o',
    	char_type<'r',
    	char_type<'l',
    	char_type<'d',
    	char_type<'!',
    	char_type<'\n', empty_struct> > > > > > > > > > > > > data_type;
    
    template<typename T>
    void print()
    {
    	std::cout << T::value;
    	print<T::next>();
    }
    
    template<>
    void print<empty_struct>()
    {
    }
    
    int main(int argc, char* argv[])
    {
    	print<data_type>();
    
    	return 0;
    }

    Такой простой hello world!

    Запостил: AxisPod, 03 Октября 2011

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

    • Hello template.
      И связный список.
      Ответить
      • это все-таки скорее кортеж, а не связной список, у списка возможностей побольше будет.
        Ответить
        • Нет. Это иммутабильный связанный список. В таком элементы можно добавить\убрать\подсчитать\доступ по индексу и сортировку устроить. См Loki от Андрейки Александреску. Там, конечно, список немного другой, но идея та же.
          Ответить
          • Или иммутабельный, или можно удалить / добавить. Если чесно, я не на столько хорошо знаю язык, чтобы судить, но я бы не придумал способ, как тут добавить элемент. В C++ можно в рантайме поменять то что из этого шаблона сгенерируется и вместо одного типа подставить другой?
            Ответить
            • Например, в конец иммутабильного списка добавляют так:
              var immuatbleList= new TImmutableList(oldImmuatbleList, additionItem);
              Так же и в середину. То есть пересоздав его. На уровне шаблонов C++ также и сортируют списки и тд...
              Ответить
              • че за var?
                где тут, блеать, Цэпэпэ?

                у ЦэПэПэГовно в бошке смешались типы и данные
                Ответить
                • Это псевдокод для демонстрации описанного принципа.
                  Ответить
        • классический однонаправленный связный список: поле данных и указатель на след. элемент.
          Ответить
          • Список, по задумке, динамическая структура, куда можно добавлять, или откуда можно удалять элементы. Иначе - какй смысл? - проще массив использовать. Хотя, опять же, я спорить не стану ввиду комментария выше - может я просто не знаю чего.
            Ответить
            • >Иначе - какй смысл?
              Никакого в данном случае. Чувак решил повыпендриваться.
              У Андрейки были списки типов, а не данных, поэтому в этом был смысл.
              Ответить
            • Ну, а если вы список один раз сформировали и больше не трогаете, это же не делает его не_списком.
              Простоту и смысл искать в кодах на ГК не надо :)
              Ответить
            • Этот список можно перекорежить как угодно, но это список времени компиляции, соответственно и оперировать им можно на этапе компиляции как угодно, было бы желание.
              Ответить
    • hello world на шаблоном языке крестов.
      Ответить
    • как демо-пример - годится
      Ответить
      • демо-пример того, как это делать нельзя.
        Ответить
        • понятно, что Hello world так не делается:)
          в смысле, демонстрация возможностей шаблонов.
          Ответить
    • И что?
      Ответить
    • показать все, что скрытоХероподгандонное трипиздомудоблядское захуище.
      Ответить
      • Толсто. Можно я это на стене вконтакте у вас напишу?
        Ответить
        • Ну это всяко лучше, чем связный список на шаблонах.
          Ответить
    • красиво
      Ответить
    • показать все, что скрытозабавно наблюдать дискуссию уродов о пластической хирургии.
      Ответить
      • о, вот и илита прибежала
        Ответить
      • Посмотри на нас свысока, о рогатая глазастая красная залупа...
        Ответить
      • Да ты же ИЛИТА!
        Ответить
        • эх детишки...
          Ответить
          • да, да, да,..
            И объясните дяденьке наконец:
            # почему в данном случае значение some_var1 не раскрывается?
            some_var1="1 2 3"
            some_var2='1 2 3 $some_var1'
            
            echo $some_var2

            PS линуксоид хренов

            И это не твоё случайно?

            Ты отдалась другому,
            И я забыл тебя.
            Твои глаза сияли,
            Когда любил тебя
            Мой любопытный взгляд.

            Ответить
          • пап!
            поставь нам хаскелл на икс-бокс, блеать!
            будь мужиком!
            Ответить
    • Низачот.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить

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