Lo standard definisce il tipo di un letterale stringa, in §2.13.5/8, come:Perché decltype su una stringa letterale non produce un tipo di matrice?
ordinaria stringhe e UTF-8 stringhe sono anche denominato strette stringhe letterali. Un letterale stringa stretto ha tipo "array of n const char", dove n è la dimensione della stringa come definito di seguito e ha durata di archiviazione statica (3.7).
Pertanto, ad esempio, "sss"
dovrebbe avere un tipo di char const[4]
(a meno che non lo sto leggendo in modo non corretto).
Ma questo semplice frammento:
std::cout << std::boolalpha << std::is_pointer<decltype("sss")>::value << '\n';
std::cout << std::boolalpha << std::is_array<decltype("sss")>::value;
false
false
Che cosa mi manca?
Altamente correlato: https://stackoverflow.com/q/15036281/3002139 –