Здравствуйте, Максим Рогожин, Вы писали:
МР>По стандарту число это rvalue, а строки это lvalue.
Нет, строка вообще х.з. что. Которая литерал. Потому, что две одинаковых по тексту строки могут иметь одинаковый адрес. Это не объект. Её адрес параметром шаблона, например, не передать, она в constexpr не может участвовать (строка засунутая, не по указателю, а как есть, текст, в объект -- может). Корни всего в том, что в C так сделано.