Спецификаторы decltype((const int)a)
и decltype((const int)1)
оба разрешают до int
.Это связано с тем, что const
значений типа non-class нет, как описано в C ++ 17 [expr]:
Если значение prvalue изначально имеет тип cv T
, где T
является неквалифицированным cv неклассом, не относящимся к массиву типом, тип выражения корректируется до T
перед любым дальнейшим анализом.
Ваш вывод может быть просто ошибкой вдиагностическое сообщениеЧтобы подтвердить ошибку компилятора, вы можете написать некоторый код, поведение которого отличается в зависимости от результата decltype, например:
decltype((const int)1) x; x = 5;
, который должен успешно скомпилироваться.