Описание тега initializer-list

NoneStd ::initializer_list is a special type in C++11 which is used to construct containers and other types from a list of values of the same type. May be implemented as a pair of pointers or pointer and length and its storage could be automatic, temporary, or static read-only.
2 ответа

Как были инициализированы const и ссылочные типы перед списками инициализаторов?

В Ivor Horton Beginning Visual C++ 2013 говорится о "инициализирующих списках" в C++, которые: "С членами класса, которые являются константными или ссылочными типами, у вас нет выбора в отношении того, как они инициализируются. Единственный способ -…
10 июл '16 в 23:44
3 ответа

Почему я могу использовать списки инициализаторов в правой части оператора +=, но не оператора +?

Это продолжение предыдущего вопроса о том, почему я не могу использовать инициализатор в скобках в качестве аргумента operator+, который был решен путем рассмотрения этого более раннего вопроса на эту тему. Рассмотрим следующий код C++, который вы м…
04 мар '17 в 23:01
0 ответов

Синтаксис для указания аргумента шаблона для конструктора в списке инициализатора

Каков синтаксис для указания аргумента шаблона для конструктора в списке инициализатора? Обратите внимание, что конструктор является шаблоном, а не весь класс. Например: class Member { ... }; class SpecializedMember : public Member { ... }; class C …
24 фев '16 в 16:05
0 ответов

Не удалось преобразовать '<заключенный в скобки список инициализаторов>' в 'arma::mat

Я просто копирую вставленную из документации матричной библиотеки Armadillo для непосредственной инициализации матричного объекта: #include &lt;armadillo&gt; using namespace arma; int main() { mat A = { {1, 3, 5}, {2, 4, 6} }; A.print(); return 0; }…
09 окт '15 в 03:35
1 ответ

Использование std::initializer_list и int в качестве параметра функции вызывает "неправильный" перевод компилятора

Вот код, я нахожу странную вещь о std::initializer_list . Я использую vs2013. Спасибо за помощь. struct TempStruct { int t1; int t2; }; int Test_A(int a, int b) { std::cout &lt;&lt; " int a, int b" &lt;&lt; '\n'; return 1; } TempStruct Test_A(std::i…
03 мар '14 в 05:58
2 ответа

C++ делегирование ctor и родительского ctor с аргументом

Это не похоже на работу в C++11: class B : public A { public: B(const A&amp; a) : A(a) // parent constructor for passing the parameter , B() // delegating constructor for init of other members {}; // ... }; GCC говорит мне, что an initializer for a …
05 апр '16 в 13:33
1 ответ

Список инициализатора для массива

На данный момент у меня есть класс Permutation, который имеет это: public: int elements[N]; Permutation(std::initializer_list&lt;size_t&gt; data): elements(data) {}; Но когда я пытаюсь скомпилировать, я получаю это: ошибка: инициализатор массива дол…
10 дек '15 в 07:02
1 ответ

Список инициализатора C++11 + указатель на функцию вызывает головную боль

Я пытаюсь создать глобальную карту, которая будет сопоставлять строки с заводскими функциями. Это позволяет мне иметь функцию построителя, которая считывает ключ из INI-файла, а затем передает этот INI-файл с соответствующим разделом в правильную фа…
06 июн '12 в 12:14
1 ответ

Почему существуют правила перегрузки конструктора C++11 std::initializer_list?

Я не могу думать ни найти, ни найти оправдание для следующего кода: std::vector&lt;int&gt; a{1,2} // calls (7) std::vector&lt;int&gt; a(1,2) // calls (2) // constructors from http://en.cppreference.com/w/cpp/container/vector/vector vector( std::init…
02 фев '15 в 02:09
1 ответ

Как завершить конструктор, если член класса происходит из другого класса?

Например, у меня есть два класса Array и Stack. template &lt;typename T&gt; class Array { private: T* array; int size; ... public: Array(int size); ... } template &lt;typename T&gt; class Stack { private: int top; Array&lt;T&gt; stack; ... public: S…
03 мар '18 в 23:14
1 ответ

Итерирование различных шаблонных типов

Я застрял на этом некоторое время, и у меня закончились идеи, помощь оценена! Следующие сегменты являются примером кода, чтобы упростить. Предположим следующее: class Base; class DerivedA : public Base; class DerivedB : public Base; и это: class Man…
2 ответа

Инициализируйте const int и объект с этим const int в одном конструкторе

У меня есть объект, который создается в файле.h, который должен быть инициализирован в конструкторе. Этому объекту передается номер COM-порта, который равен 5 в нашем текущем приложении. По этой причине я создал const int в.h файле. Изменить: я доба…
16 янв '17 в 15:39
2 ответа

Передача примитивного массива в функцию с аргументом std::initializer_list

С функцией a, принимающей std::initializer_list в качестве аргумента, как показано ниже int sumOf(std::initializer_list&lt;int&gt; numbers) { int sum = 0; for (auto x : numbers) { sum += x; } return sum; } Этот код работает auto sum = sumOf({ 0, 1, …
06 дек '12 в 07:20
4 ответа

Почему нельзя инициализировать член данных базового класса в списке инициализатора конструктора производного класса?

Таков код с ошибкой:"недопустимая инициализация члена:" a "не является базой или членом", что означает информация об ошибке и почему?? class A{ public: int a; }; class B:public A{ public: B(); }; B::B():a(10){ // put "a(10)" into the constructor bod…
07 авг '12 в 02:28
8 ответов

Преобразовать вектор<T> в initializer_list<T>

Каждый создает std::vector от std::initializer_listа как же наоборот? например. если вы используете std::initializer_list в качестве параметра: void someThing(std::initializer_list&lt;int&gt; items) { ... } Есть моменты, когда у вас есть свои вещи в…
19 сен '13 в 13:11
1 ответ

Неоднозначность std::initializer_list в Visual Studio

Я пытаюсь принять std::initializer_list в общий конструктор, например так: template&lt;typename T&gt; class Test{ std::vector&lt;T&gt; V; Test(std::initializer_list&lt;T&gt;&amp; list) : V(list){} }; с помощью Test&lt;int&gt; test{ 1, 2, 3, 4 }; Но …
19 ноя '15 в 15:31
2 ответа

Почему синтаксис двойных фигурных скобок не предпочтителен для конструкторов, принимающих std::initializer_list

Равномерная инициализация является важной и полезной функцией C++11. Тем не менее, вы не можете просто использовать {} с тех пор std::vector&lt;int&gt; a(10, 0); // 10 elements of value zero std::vector&lt;int&gt; b({10, 0}); // 2 elements of value …
0 ответов

Используйте оператор == и initializer-list

Например template&lt;class Container, class T&gt; bool operator==(Container const&amp; c, std::initializer_list&lt;T&gt; const&amp; l) { return c.size() == l.size() &amp;&amp; equal(c.begin(), c.end(), l.begin()); } Проверьте по std::vector&lt;int&g…
01 мар '17 в 05:39
3 ответа

Как переместить элементы initializer_list?

Допустим, у вас есть переменная типа std::vector&lt;std::string&gt; и вы инициализируете его списком инициализаторов: using V = std::vector&lt;std::string&gt;; V v = { "Hello", "little", "world", "of", "move", "semantics" }; Компилятор создаст време…
02 апр '16 в 19:22
0 ответов

Ошибка создания экземпляра при передаче initializer_list пар конструктору класса

Я не могу понять, что не так с конструктором моего класса. Когда я пытаюсь создать экземпляр объекта класса таблицы, я получаю error: no matching function for call to ‘std::map&lt;int, int, std::less&lt;int&gt;, std::allocator&lt;std::pair&lt;const …
12 янв '14 в 06:18