经过多年盲目地接受std::vector
返回的事实const_reference
,但是,鉴于const如何为智能指针工作,我现在开始想知道为什么它和其他STL容器都是这样设计的.似乎a的"constness" const std::vector
既适用于向量及其元素,而对于智能指针,"constness"仅适用于指针而不适用于它所指向的元素.
为了澄清,似乎应该有一个类似矢量的容器,const
这意味着用户不能改变容器的大小,但容器中的元素是可变的.我的主要问题是:是否有某些东西可以阻止这种类型的容器"const正确"?
似乎通过添加一个额外的间接层(例如std::vector
)来实现这一点有一些hackish变通方法,但我正在寻找一些在维护方面不那么尴尬的东西.
顺便说一句,如果在STL容器之前将智能指针合并到语言中,那么const访问器是否仍然按照它们今天的方式定义?