Qual é o tipo de uma string literal em C ++?

Por exemplo, qual é o tipo da string literal “Hello”, const char[6] ou const char* ?

O tipo da string literal "Hello" é “array de 6 const char “.

Literais de string ordinários e literais de string UTF-8 também são referidos como literais de string estreitos. Um literal de string estreita tem o tipo “array de n const char “, onde n é o tamanho da string […]

Pode, no entanto, ser convertido para um const char* por conversão de array para ponteiro. A conversão de matriz para ponteiro resulta em um ponteiro para o primeiro elemento da matriz.

O padrão define como “array de n const char “, então é const char[n] (n é o tamanho da string, incluindo o byte de terminação NUL).

Seção 7, § 2.14.15:

Um literal de string estreita tem o tipo “array de n const char”, onde n é o tamanho da string como definido abaixo, e tem duração de armazenamento estático.