ksl*_*ksl 15 const vector c++11 visual-studio-2013 visual-studio-2015
以下代码使用Visual Studio 2013编译正常.
#include <vector>
#include <string>
int main()
{
const std::string constString("fred");
const std::vector<const std::string> myVector{ constString };
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用Visual Studio 2015编译它,则会报告以下错误:
1>xmemory0(587): error C2338: The C++ Standard forbids containers of const elements because allocator<const T> is ill-formed.
我见过各种帖子,特别是这个帖子C++ 11允许vector <const T>吗?,关于vector<const T>以及为什么它不被允许,但我真的不明白.但是,在上面的例子中,向量本身是const.
有人可以解释一下吗?VS 2013成功编译是错误的吗?
Standard Requirement for T
======== =================
C++03 any type
C++11 any non-const, non-reference object type
C++14 any non-const object type
C++17 any cv-unqualified object type
Run Code Online (Sandbox Code Playgroud)
标准中没有任何地方对容器本身的情况做出例外规定const
所以是的,VS 2013编译成功是错误的。
| 归档时间: |
|
| 查看次数: |
5879 次 |
| 最近记录: |