My assumption was that std::auto_ptr
can not be used in standard containers ( Why is it wrong to use std::auto_ptr<> with standard containers?
),
giving the compiler error because of only copy semantics was supported before C++11, but I think we can use auto_ptr
same as std::unique_ptr
in the container, if we use move semantics with out any issues.
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
int main()
{
auto_ptr<int> a1(new int(1));
auto_ptr<int> a2(new int(2));
auto_ptr<int> a3(new int(3));
auto_ptr<int> a4(new int(4));
vector<auto_ptr<int>> v1;
v1.push_back(std::move(a1));
v1.push_back(std::move(a2));
v1.push_back(std::move(a3));
v1.push_back(std::move(a4));
for(auto it: v1)
cout <<*it <<" ";
}