最佳答案
如果我通过 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
是不可复制的:
错误: 使用删除函数‘ std: : only _ ptr < _ Tp,_ Dp > : : only _ ptr (const std: : only _ ptr < _ Tp,_ Dp > &)[ with _ Tp = int; _ Dp = std: : default _ delete; std: : only _ ptr < _ Tp,_ Dp > = std: : only _ ptr ]’
GCC 试图从初始化器列表中复制指针是否正确?