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

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

Сообщение Anonymous »

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

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

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

void FailingInit(std::initializer_list data ) {
std::vector cols( data ); // does not build
}

void SuccessfulInit(std::initializer_list data ) {
std::vector cols( 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++»