Создание вектора объекта с использованием std::initializer_listC++

Программы на C++. Форум разработчиков
Anonymous
Создание вектора объекта с использованием std::initializer_list

Сообщение Anonymous »

Я пытаюсь инициализировать вектор объекта Col, как показано ниже.

Класс Col создан с использованием одного элемента std::string.
Знаете ли вы, почему приведенный ниже код не компилируется, когда я пытаюсь передать напрямую std::initializer_list в вектор?
Если я создаю вектор объектов, использующих итераторы, это работает нормально.
#include
#include
#include

class Col {
std::string m_name;

public:
explicit Col(const std::string& any_name) : m_name(any_name) {}
};

void foo(std::initializer_list data) {
std::vector v(data);
}

void bar(std::initializer_list data) {
std::vector v(data.begin(), data.end());
}

Я использую VS 2022 и компилирую с использованием C++17.
У меня есть ошибка:
error C2665: 'std::vector::vector':
no overloaded function could convert all the argument types

cannot convert argument 1 from 'std::initializer_list' to 'std::initializer_list
with
[
_Ty=Dictionary::Col,
_Alloc=std::allocator
]


Подробнее здесь: https://stackoverflow.com/questions/799 ... lizer-list

Вернуться в «C++»