Вопрос: какой тип у строкового литерала "Hello, world!"?
Ответ: его тип это const char[13]
Вопрос: что выведет decltype("Hello, world!")?
Ответ: поскольку массив это lvalue, будет выведено const char (&) [13]
Вопрос: что вернёт sizeof("Hello, world!")?
Ответ: sizeof("Hello, world!") == 14
А теперь философский вопрос: почему это так -- там 13 а там 14?
Нет, серьёзно. Дополнительный implicit нулевой завершающий символ влияет на sizeof, ок, так и сделали бы выведенный тип тоже шириной 14. Я погуглил ответ, но как-то никак. Я уверен, что это сделано for a reason, чтобы в языке что-нибудь такое важное срослось. Но что?
Спросил бы на stackoverflow, но вопрос получится "слишком общий" по тамошним правилам.