В языке есть только две категории типов, которые не могут иметь const-квалификации: ссылочные типы и типы функций. Таким образом, если const Tне может быть константным типом, это означает,T это либо тип функции, либо ссылочный тип. Если вы можете исключить ссылочные типы, то у вас останутся только типы функций.
Обратите внимание, что тип функции, который содержит квалификатор cv, например int(int) const, не является константным типом. Это пример «отвратительного типа функции», единственное реальное использование которого состоит в том, чтобы составлять или разлагать типы указателей на функции-члены. Тип int(int) constне может быть получен путем добавления const-квалификации поверхint(int) . Скорее, constприменяется к подразумеваемому параметру объекта.
!is_constчасти.