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

    +6

    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
    #include <iostream>
        using namespace std;
         
        struct One
        {
          bool operator==(const One &) { cout << "hello from One!" << endl; return true; }
          bool operator==(unsigned int) { cout << "hello from One!" << endl;  return true; }
        };
        One operator "" x( unsigned long long int ) { return One{}; }
        One operator "" xMAGICK( unsigned long long int ) { return One{}; }
         
        int main()
        {
          cout << (0xMAGICK == 0x);
         
          return 0;
        }

    http://ideone.com/gGYFce
    Расширяем множество шестнадцатеричных цифр при помощи UDL
    В C++17 осталось разрешить перегрузку операторов встроенных типов - вот тогда можно будет оторваться по-полной!

    Запостил: gost, 05 Мая 2016

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

    • "... user-defined literal operators must begin with an underscore: declarations such as operator ""if may only appear as part of a standard library header."
      Привет стандарт, как дела?
      Ответить
      • Да, компилятор плачет, бросает ворнинги, но всё-равно продолжает жрать кактус этот код.
        Ответить
        • Правильные поцаны собирают с -pedantic -Wall -Werror.
          Ответить

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