chr*_*ris 7 c++ containers const language-lawyer
C++ 11禁止const元素容器的理由是什么?我指的是以下错误消息,如果您定义,例如,const元素的向量,您会得到:
错误C2338:C++标准禁止使用const元素的容器,因为allocator <const T>是错误的.
如果您阅读类似的问题,答案通常会重复出现错误信息,但从不详细说明,甚至不会解释为何static_assert引入错误信息.定义const元素的容器似乎不是一件不合理的事情,为什么C++ 11会禁止它呢?由于过去在早期版本中允许使用,这种限制的确切原因是什么?
以下是无法在VS2017中编译的示例代码:
#include "stdafx.h"
#include <vector>
struct foo {};
typedef std::vector<const foo> foo_vector;
int main(int argc, char** argv)
{
foo_vector v;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
关于可能重复的问题,它既不提供背景也不提供可靠的答案.
| 归档时间: |
|
| 查看次数: |
1526 次 |
| 最近记录: |