Описание тега list-initialization
В C++11 инициализация списка относится к инициализации переменной с помощью фигурных скобок.
1
ответ
C++: как выполняется построение по списку инициализации?
C++ позволяет создавать экземпляры класса, устанавливая значение открытых членов через список инициализации, как показано в примере ниже для b1: class B { public: int i; std::string str; }; B b1{ 42,"foo" }; B b2(); ; Однако, если я предоставлю конс…
12 сен '16 в 03:14
1
ответ
Концептуально ли инициализация списка копирования вызывает copy ctor?
До C++11 мы можем выполнить инициализацию копирования, написав что-то вроде A a = 1; что более или менее эквивалентно A a = A(1);, То есть сначала создается временный объект, а затем вызывается копия ctor. Независимо от исключения копирования, это д…
17 ноя '14 в 01:35
2
ответа
Инициализация фигурных скобок без какого-либо значения
Можно ли написать что-то подобное typedef unsigned long DWORD; DWORD nBytesRead = {}; Будет ли эта переменная содержать 0 после этого выражения?
18 сен '15 в 09:40
2
ответа
std:: инициализатор списка строк {} vs {{}}
Так что я занимался поиском и поиском на этом сайте, но я изо всех сил пытаюсь найти ответ на следующий код и надеюсь, что кто-то с большим знанием инициализатора списка может помочь мне понять, что происходит. int main() { std::string t1 = {{}}; st…
23 май '18 в 09:52
2
ответа
Формы инициализации списка
Смотрите следующий код: std::vector<int> v1{1, 2, 3}; std::vector<int> v2 = {1, 2, 3}; Мои вопросы: Есть ли разница между ними? Я знаю, что первая должна быть инициализация списка, но как насчет второй? Поскольку есть знак присваивания д…
26 июл '16 в 06:56
1
ответ
Каков возвращаемый тип инициализации списка?
Кто-нибудь хотел бы объяснить, почему дела 1 и 2 имеют разные выходные данные для этого фрагмента кода. struct A { A() { cout << "A()" << endl; } A(int i) { cout << "A(int)" << endl; } A(const A&) { cout << "A(const…
21 сен '17 в 10:36
1
ответ
Класс с инициализацией списка с помощью указателей на функции
Я пытаюсь написать класс, который получит (число) пару (ы) массивов символов (и строк, позже) и указателей на функции, из которых я планирую использовать нужную функцию. Я использую модифицированную версию кода, представленную в этом вопросе, в целя…
26 авг '18 в 00:32
2
ответа
Как построить вектор с уникальными указателями
Я пытаюсь построить вектор с unique_ptr. Но я не нахожу прямой путь. Следующий код не компилируется. Ошибка: Вызов неявно удаленного конструктора копии 'std::__1::unique_ptr >': #include <iostream> #include <memory> #include <utility&…
30 апр '15 в 16:02
1
ответ
Список инициализации ссылки: правильно ли GCC или Clang?
Учитывая этот пример: int g_i = 10; struct S { operator int&(){ return g_i; } }; int main() { S s; int& iref1 = s; // implicit conversion int& iref2 = {s}; // clang++ error, g++ compiles fine: // `s` is converted // to a temporary int an…
09 янв '19 в 23:25
1
ответ
Конструктор из ссылки на массив не выбран для инициализации списка
Учитывая следующую структуру: struct A { template<typename T, std::size_t N> A(T const(&array)[N]) {} template<typename T, std::size_t N> A& operator=(T const(&array)[N]) { return *this; } }; Код: // a is of type A a = {1, 2,…
03 фев '19 в 21:11
3
ответа
Ошибка компиляции при использовании пустого конструктора инициализации списка в C++17
Я столкнулся со странной проблемой при попытке перейти на C++17. Проблема в том, что кое-что (и я не уверен, что) изменилось в C++ 17, что заставило инициализацию списка работать по-другому в случае конструктора по умолчанию. Я пытался найти https:/…
08 янв '19 в 13:23
0
ответов
C++11 инициализация списка не работает
Вот мои файлыscreen.h #ifndef SCREEN_H #define SCREEN_H class Screen { public: using pos = std::string::size_type; Screen() = default; Screen(pos ht, pos wd, char c) : height(ht), width(wd), contents(ht*wd, c) {} char get() const { return contents[c…
04 апр '14 в 17:02
0
ответов
Почему нельзя использовать auto & list initialization вместе до g++ 5.1.0?
Рассмотрим следующую программу: #include <iostream> int main() { int n; int fact{1}; std::cout<<"Enter a number: "; std::cin>>n; for(auto i{1};i<=n;i++) fact*=i; std::cout<<"fact of "<<n<<" is "<<fact; } …
02 ноя '15 в 05:51
2
ответа
Вставьте инициализированную в списке пару в std::map
Я пытаюсь вставить в карту только подвижный тип. У меня есть следующий кусок кода: #include <map> class Moveable { public: Moveable() = default; Moveable(const Moveable&) = delete; Moveable(Moveable&&) = default; Moveable& oper…
16 мар '18 в 07:32
2
ответа
Определенные реализацией сужающие преобразования?
C++11 формализовал понятие сужающегося преобразования и запретил использовать его на верхнем уровне при инициализации списка. Мне интересно, если, учитывая два типа T а также U, это может быть определено реализацией, является ли преобразование из T …
19 ноя '12 в 10:14
1
ответ
Почему тип braced-init-list с одним элементом переключается на тип самого элемента?
В приведенном ниже коде вызов функции-члена F экземпляра b с аргументом {1,2} компилируется и вызывает B::F(std::initializer_list<int>), Но если я удаляю один элемент из списка braced-init-list и использую только {1}, я получаю ошибку 9 : erro…
14 апр '16 в 23:39
0
ответов
C++14: Почему я не могу использовать фигурные скобки для `void`?
Довольно часто (по крайней мере, в моем коде) использовать decltype а также std::enable_if_t иметь простой и эффективный выбор SFINAE. Что-то вроде следующего: template <typename A1, typename A2, typename... Auts> inline auto infiltration(cons…
18 мар '15 в 17:06
1
ответ
Включить конструктор списка инициализаторов по умолчанию
Я полагаю, что современные списки инициализаторов C++ очень полезны для инициализации объектов, так что отпадает необходимость в определении собственного конструктора: struct point { float coord[3]; }; point p = {1.f, 2.f, 3.f}; // nice ! Однако это…
30 апр '15 в 14:18
1
ответ
Как запретить инициализацию пустого списка?
У меня есть класс, в котором нет участников. И поэтому он не предназначен для реализации. Итак, я удалил по умолчанию кр. Это запрещает любую конструкцию, кроме инициализации списка. Есть ли способ это тоже запретить? class Empty{ //No non-static da…
05 ноя '16 в 05:14
0
ответов
Инициализация списка MSVC ICE при использовании со структурами?
Этот фрагмент кода хорошо компилируется на gcc 8.1 и clang 6.0, но дает ICE на MSVC (предварительный выпуск на 2017 и 2018 годы): #include <vector> #include <string> struct Data { unsigned char data; }; struct A { std::string x; Data y{2…
28 июл '18 в 15:53