- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 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);
                                Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
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 (без пяти минут кусок стандарта) сомневается, валидную метушню он написал или нет. Пора уже создавать крестоблядский суд, который будет трактовать букву стандарта и решать, где с++ а где нет. И разрабы гцц будут нанимать за бешеное бабло крестоблядских юристов и судиться в крестоблядском суде с авторами багрепортов.
        
И оно таки сопоставимо с std::is_integral_v
Это же просто опускание имени переменной, так?
Как именно отсекаются типы с плавающей точкой и пользовательские типы, конструируемые из 1?