Existem apenas duas categorias de tipos no idioma que não podem ter qualificação constante: tipos de referência e tipos de função. Portanto, se const T
não for um tipo qualificado de const, significa que T
é um tipo de função ou um tipo de referência. Se você pode descartar tipos de referência, restam apenas os tipos de função.
Observe que um tipo de função que carrega um qualificador de cv, como int(int) const
, não é um tipo qualificado de const. É um exemplo de um "tipo de função abominável", cujo único uso real é compor ou decompor tipos de função de ponteiro para membro. O tipo int(int) const
não pode ser obtido adicionando const-qualification em cima de int(int)
. Em vez disso, const
aplica-se ao parâmetro de objeto implícito.
!is_const
parte.