Если я пропущу следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptr
s в вектор .
#include <vector>
#include <memory>
int main() {
using move_only = std::unique_ptr<int>;
std::vector<move_only> v { move_only(), move_only(), move_only() };
}
Очевидно, это не может работать, потому что std :: unique_ptr
не копируется:
ошибка: использование удаленной функции 'std :: unique_ptr <_Tp, _Dp> :: unique_ptr (const std :: unique_ptr <_Tp, _Dp> &) [с _Tp = int; _Dp = std :: default_delete; std :: unique_ptr <_Tp, _Dp> = std :: unique_ptr] '
Правильно ли GCC пытается скопировать указатели из списка инициализаторов?