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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    template<class T, T = 1>
        constexpr bool __can_one(int) { return true; };
        template<class T>
        constexpr bool __can_one(long) { return false; };
    
        template <class T>
        constexpr bool is_integral_v = __can_one<T>(0);

    https://twitter.com/ericniebler/status/976524085927731200
    Не кто попало, а автор Ranges TS (без пяти минут кусок стандарта) сомневается, валидную метушню он написал или нет. Пора уже создавать крестоблядский суд, который будет трактовать букву стандарта и решать, где с++ а где нет. И разрабы гцц будут нанимать за бешеное бабло крестоблядских юристов и судиться в крестоблядском суде с авторами багрепортов.

    Запостил: subaru, 21 Марта 2018

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

    • В качестве упражнения накостылял аля тест: https://wandbox.org/permlink/6h9UXgqcyR4TC941

      И оно таки сопоставимо с std::is_integral_v
      Ответить
    • > template<class T, T = 1>
      Это же просто опускание имени переменной, так?

      Как именно отсекаются типы с плавающей точкой и пользовательские типы, конструируемые из 1?
      Ответить
      • ок, шаблоны нельзя параметризовать переменными пользовательских или вещественных типов. Век живи век учи плюсы
        Ответить

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