Я пытаюсь инициализировать вектор объекта 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