Я пытаюсь использовать std::make_unique
, чтобы инициализировать класс, конструктор которого должен получить std::initializer_list
. Здесь минимальный случай:
#include <string>
#include <vector>
#include <initializer_list>
#include <memory>
struct Foo {
Foo(std::initializer_list<std::string> strings) : strings(strings) {}
std::vector<std::string> strings;
};
int main(int, char**) {
auto ptr = std::make_unique<Foo>({"Hello", "World"});
return 0;
}
Вы можете видеть на Coliru, который он не создает:
main.cpp:14:56: error: no matching function for call to 'make_unique(<brace-enclosed initializer list>)'
auto ptr = std::make_unique<Foo>({"Hello", "World"});
Итак, возможно ли make_unique
использовать initializer_list
? Есть ли ошибка в GCC 4.9.1? Или я что-то упустил?