Могу ли я инициализировать список-инициализировать вектор типа «только перемещение»?

Если я пропущу следующий код через мой снимок 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 пытается скопировать указатели из списка инициализаторов?

89
задан R. Martinho Fernandes 12 December 2011 в 01:06
поделиться