Приведенный ниже код может быть успешно скомпилирован с использованием Visual Studio 2015, но не удалось с помощью Visual Studio 2017. Отчеты Visual Studio 2017:
ошибка C2280: "std :: pair :: pair (const std :: pair &)": попытка сослаться на удаленную функцию
Код
#include <unordered_map>
#include <memory>
struct Node
{
std::unordered_map<int, std::unique_ptr<int>> map_;
// Uncommenting the following two lines will pass Visual Studio 2017 compilation
//Node(Node&& o) = default;
//Node() = default;
};
int main()
{
std::vector<Node> vec;
Node node;
vec.push_back(std::move(node));
return 0;
}
Похоже, Visual Studio 2017 явно требует объявления конструктора перемещения. Какова причина?