Ответ 1
Некоторые черты типа, такие как std::is_class
, просто используют встроенные функции компилятора (ака встроенные). Вы не можете написать их самостоятельно без специальной поддержки от компилятора.
Типовые свойства в основном полезны в общем контексте - вы можете специализироваться на свойствах типов или накладывать ограничения на аргументы шаблона. Например, реализация std::copy
может использовать std::memcpy
внутренне вместо явного цикла, когда итераторы являются указателями на POD. Это может быть достигнуто с помощью SFINAE.