【发布时间】:2016-02-25 22:22:49
【问题描述】:
在下面的代码sn-p中:
std::vector<std::unique_ptr<int>> vec;
vec.emplace_back(std::make_unique<int>(1));
vec.emplace_back(std::make_unique<int>(2));
vec.emplace_back(std::make_unique<int>(3));
vec.emplace_back(std::make_unique<int>(4));
vec.emplace_back(std::make_unique<int>(5));
auto & itr = std::find_if(vec.begin(), vec.end(), [](std::unique_ptr<int> & val)->bool
{
return *val == 5;
});
vec.erase(itr);
我收到以下警告:
Severity Code Description Project File Line
Warning C4239 nonstandard extension used: 'initializing': conversion from 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::unique_ptr<int,std::default_delete<_Ty>>>>>' to 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::unique_ptr<int,std::default_delete<_Ty>>>>> &'
我做错了什么?
我在 VS2015 上,此警告仅在警告级别 4 出现。我应该忽略它还是会导致任何偷偷摸摸的问题(如果在更大的上下文中使用了涉及 unique_ptrs 向量的类似代码)?
【问题讨论】:
标签: c++ c++11 vector compiler-warnings unique-ptr