Дает ли `decltype` статический тип объекта или тип времени выполнения?
[C++11: 7.1.6.2/4]:
Тип обозначаетсяdecltype(e)
определяется следующим образом:
e
это без скобокID-выражение или доступ к члену класса без скобок (5.2.5),decltype(e)
это тип объекта с именемe
, Если такой организации нет, или еслиe
называет набор перегруженных функций, программа некорректна;в противном случае, еслиe
это xvalue,decltype(e)
являетсяT&&
, гдеT
это типe
;в противном случае, еслиe
это значение,decltype(e)
являетсяT&
, гдеT
это типe
;в противном случае,decltype(e)
это типe
.Операндdecltype
спецификатор является неоцененным операндом (раздел 5).
Второй, третий и четвертый случаи четко относятся к типу выражения, которое не будет включать какие-либо соображения полиморфизма.
Впрочем, и я не совсем уверен, что "организацияозначает здесь,первый дело, кажется, называетобъект ссылается на выражениеe
, Для меня неоднозначно, означает ли «тип объекта» его тип времени выполнения или его статический тип.