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

    +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
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    template<size_t n>
    struct counterNumber {
        char data[n+1];
    };
     
    template<size_t index, size_t val>
    counterNumber<val> magic(counterNumber<index>, counterNumber<val>);
     
    #define COUNTER_READ() \
        (sizeof( \
            magic(counterNumber<1>(), \
            	magic(counterNumber<2>(), \
            		magic(counterNumber<4>(), \
            			magic(counterNumber<8>(), \
            				magic(counterNumber<16>(), \
            					magic(counterNumber<32>(), \
            						magic(counterNumber<64>(), \
            							magic(counterNumber<128>(), counterNumber<0>())))))))))-1)
     
    #define COUNTER_INC() \
        counterNumber<COUNTER_READ()+1> magic( \
            counterNumber<(COUNTER_READ()+1)&~COUNTER_READ()>, \
            counterNumber<(COUNTER_READ()+1)&COUNTER_READ()>)
     
    #include <iostream>
    using namespace std;
    #define TO_STRING(x) #x
     
     
    #define REG_FUNCTIONAL(headFunction) \
        template<> \
        constexpr auto foo< COUNTER_READ() >() \
        { \
            return TO_STRING(headFunction); \
        } \
        COUNTER_INC(); \
        headFunction
     
    template<size_t n>
    constexpr auto foo(void){return "";}
     
     
    REG_FUNCTIONAL(void function(int a)){(void)a;}
    REG_FUNCTIONAL(void function1(int a)){(void)a;}
     
     
    	// your code goes here
    template<size_t n>
    std::string callFoo()
    {
        return std::string(foo<n>())+callFoo<n-1>();
    }
     
    template<>
    std::string callFoo<0>()
    {
        return std::string(foo<0>());
    }
     
    int main() {
    	std::cout<<callFoo<COUNTER_READ()-1>();
    	return 0;
    }

    https://ideone.com/bASDDc

    Запостил: IKing, 21 Ноября 2015

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

    • Ниче так кодец
      Ответить
      • тихо сам с собою
        с правую рукою
        Ответить
        • Осторожнее шутите. Подростки могут неправильно понять.
          Ответить
    • https://www.youtube.com/watch?v=0p_1QSUsbsM
      Ответить
    • "С другой стороны, этот код не нуждается в обфускации"
      > // your code goes here
      это обычно свидетельствует о совместном творчестве
      Ответить
      • Да поди с примера скопипащено. Этот код гуглится по c++ compile time counter.

        Не говно в общем-то. Просто магический костыль, которых для крестов уже сотни.
        Ответить

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