Нет, я считаю, что требования к распределителю говорят, что T может быть "неконстантным, не ссылочным типом объекта".
Вы не сможете много сделать с вектором постоянных объектов.И const vector<T>
было бы почти таким же.
Много лет спустя этот быстрый и грязный ответ все еще, кажется, привлекает комментарии и голоса.Не всегда наверху.: -)
Таким образом, чтобы добавить некоторые правильные ссылки:
Для стандарта C ++ 03, который у меня есть на бумаге, таблица 31 в разделе [lib.allocator.requirements] говорит:
T, U any type
Не то чтобы любой тип действительно работал.
Итак,следующий стандарт, C ++ 11, говорит в закрытом черновике в [allocator.requirements] и теперь в таблице 27:
T, U, C any non-const, non-reference object type
, что очень близко к тому, что я изначально написал выше по памяти.Это также то, о чем был вопрос.
Однако в C ++ 14 ( черновик N4296 ) Таблица 27 теперь говорит:
T, U, C any non-const object type
Возможно, потому что ссылка, возможно, вообще не является типом объекта?
А теперь в C ++ 17 ( черновик N4659 ) именно таблица 30говорит:
T, U, C any cv-unqualified object type (6.9)
Так что исключено не только const
, но и volatile
.Вероятно, старые новости в любом случае, и просто разъяснение.
Пожалуйста, также посмотрите Информация из первых рук Говарда Хиннанта , в настоящее время прямо ниже.