Если я передам следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptr
в вектор.
#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
не может быть скопирован:
error: использование удаленной функции '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 пытается копировать указатели из списка инициализаторов?