【发布时间】:2019-03-18 09:46:56
【问题描述】:
如this answer 中所述,std::vector<T> 不能包含const T,或具有const 成员的类。但是T = std::pair<const int, int>的时候就不是这样了,如下图。为什么会这样? std::pair有什么特别之处?
#include <utility>
#include <vector>
struct foo
{
const int first;
int second;
};
int main() {
std::vector<std::pair<const int, int>> V1;
V1.resize(3); // This compiles
std::vector<foo> V2;
V2.resize(3); // This gives the error listed below
}
错误:使用已删除的函数 'foo::foo()'
注意:'foo::foo()' 被隐式删除,因为默认定义格式不正确:
【问题讨论】:
-
您链接到关于 C++03 的问答。并不是说它一定无关紧要,但从那以后 C++ 标准中进行了很多调整。
标签: c++ vector language-lawyer