2

我有这个代码:

std::vector<std::pair<const std::string, int>> vec;

vec.emplace_back("a", 1); //success
vec.emplace(vec.end(), "b", 2); //compile error

vec.emplace_back(std::make_pair<const std::string, int>("c", 3));  //success
vec.emplace(vec.end(),
     std::make_pair<const std::string, int>("d", 4)); //compile error

你能解释一下为什么吗?

4

1 回答 1

4

除了std::vector::emplace_back 之外std::vector ::emplace要求元素类型满足MoveAssignable的要求,但std::pair<const std::string, int>const std::string的第一个元素不满足要求。

类型要求

于 2017-07-12T06:07:24.890 回答