Почему нужны копии при инициализации std::vector с помощью std::initializer_list?
#include <initializer_list>
#include <memory>
#include <vector>
struct S {
S() = default;
S(const S&) = delete;
};
struct A {
A(std::initializer_list<std::unique_ptr<S>>);
} a{std::make_unique<S>()}; // 1
std::vector v{std::make_unique<S>()}; // 2
Почему я могу сделать 1, но не могу 2? Читал, что это из-за того, что initializer list создаёт копии, т.к. не может сделать move из const T массива. Но ведь тогда и первый пример бы не работал.
Источник: Stack Overflow на русском