为什么我不能push_back到const元素的向量?

eml*_*lai 5 c++ const vector

push_back对非const元素的向量按预期工作:

std::vector<int> foo;
int bar = 0;
foo.push_back(bar);
Run Code Online (Sandbox Code Playgroud)

但为什么以下不可能呢?

std::vector<const int> foo;
const int bar = 0;
foo.push_back(bar);
Run Code Online (Sandbox Code Playgroud)

更准确地说,为什么创建foo对象可能但不要求push_back它呢?

M.M*_*M.M 9

根据这个答案(来自其中一位C++ 11设计师的评论),std::vector<const T>标准不允许这样做.

答案表明,有可能提供一个自定义分配器,它允许带有该分配器的向量来保存const对象.

你最好不要试图这样做.