Вопросы по теме 'initializer-list'

списки инициализаторов c++ и вариативные шаблоны
Я хотел создать массив: template < typename T, typename ... A > struct a { T x [1 + sizeof... (A)]; a () = default; a (T && t, A && ... y) : x { t, y... } {} }; int main () { a < int, int > p { 1, 1 }; // ok...
998 просмотров

C++0x: разрешение перегрузки
В Standard-Text есть пример в 8.5.4 (3) List-initialization [dcl.init.list] struct S { S(std::initializer_list<double>); // #1 S(const std::string&); // #2 }; const S& r1 = { 1, 2, 3.0 }; // OK: invoke #1...
227 просмотров
schedule 23.10.2022

Могу ли я инициализировать список векторов типа "только перемещение"?
Если я пропущу следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptr s в вектор. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>;...
18136 просмотров

Структура с `initializer_list` ctor внутри союза?
У меня есть структура POD, но для удобства я хочу, чтобы она имела std::initializer_list ctor. Ctor по умолчанию, ctor копирования и dtor являются неявными. Однако кажется, что использование initializer_list ctor дисквалифицирует структуру как...
534 просмотров
schedule 14.02.2022

Почему 'std::vector‹int› b{2};' создать 1-элементный вектор, а не 2-элементный?
Я играл с С++ 11 последние несколько дней и придумал кое-что странное. Если я хочу равномерно инициализировать int: int a{5}; Но если я сделаю то же самое с std::vector: std::vector<int> b{2}; Создает не массив из двух...
5899 просмотров

C++: инициализация элемента ссылки для объекта, созданного в списке инициализации
Рассмотрим следующий код: class Foo { Foo() {} }; class Bar { Foo &Foo_ref; Bar() : Foo_ref() {} }; Соблюдаю как есть, получаю ошибку: tmp.cc: In constructor Bar::Bar(): tmp.cc:7: error: value-initialization of Foo&...
8674 просмотров

Безопасно ли перемещать элементы списка инициализаторов?
Возможный дубликат: initializer_list и семантика перемещения В этом коде: #include <vector> #include <initializer_list> template<typename T> class some_custom_container : public std::vector<T> { public:...
1773 просмотров

вызов перегруженного ‹списка инициализаторов в фигурных скобках› неоднозначен, как с этим бороться?
Я действительно не понимаю этого, я думал, что компилятор сначала выполняет то, что в фигурных скобках, а затем отдает результат наиболее подходящей функции. Здесь похоже, что он дает функции список инициализаторов для работы с ней... #include...
5618 просмотров
schedule 28.02.2024

ошибка Невозможно открыть включаемый файл, но он не включен в код
Я получил ошибку после установки ноябрьской CTP в Visual Studio 2012. Ошибка находится в unordered_set.hpp библиотеки повышения. Но я нигде в коде не включил unordered_set или initializer_list . Я использовал boost только в одном файле, и я...
1902 просмотров
schedule 11.02.2024

Есть ли короткий способ написать i в диапазоне (100) на С++?
Если я правильно понял, я могу использовать это для перебора фиксированного диапазона: for(int i: {1, 2, 3, 4, 5}) do_sth(i); И это то же самое: vector<int> v{1, 2, 3, 4, 5}; for(int i: v) do_sth(i); Но что, если я хочу...
459 просмотров
schedule 17.02.2023

инициализация класса или структуры атомарным массивом
Как написать пользовательский копирующий конструктор класса/структуры с массивом атомарных переменных? Например, следующий код не компилируется struct foo { std::array<std::atomic_int,3> a; foo() = default; foo(const...
1452 просмотров

сужение преобразования из 'int' в 'double' и инициализацию массива
Следующее int i = 0; double d{i}; выдает ошибку (в clang) или предупреждение (в gcc) о narrowing conversion from 'int' to 'double' . Меня поразило, что это действительно сужается, по крайней мере, до тех пор, пока я не увидел сужающее...
1502 просмотров

Определение операторов для классов библиотеки std
Я пользователь Windows 7 и использую Visual Studio Express 2012. Используемый компилятор - это компилятор, поставляемый с программой. Конкретная проблема, с которой я столкнулся, заключается в том, что initializer_list еще не поддерживается для...
58 просмотров
schedule 11.12.2022

Синтаксис списка инициализаторов в списке инициализаторов членов с использованием С++ 11
Я прошел через « A Tour of C++ ', и Бьярне использует C++11. Функция списка инициализаторов при инициализации члена в конструкторе, например (с использованием фигурных скобок): A a; B b; Foo(Bar bar): a{bar.a}, b{bar.b} {} Однако это не...
2039 просмотров

Почему `std::initializer_list` не определен как литеральный тип?
Это продолжение этого вопроса: Это законно ли объявлять объект constexpr initializer_list? . Начиная с C++14, все методы класса std::initializer_list помечены знаком constexpr . Кажется естественным иметь возможность инициализировать...
3335 просмотров

Инициализировать массив с помощью initializer_list?
Это вообще возможно? #include <array> #include <initializer_list> struct A { A ( std::initializer_list< int > l ) : m_a ( l ) { } std::array<int,2> m_a; }; int main() { A a{ 1,2 }; } Но...
2262 просмотров
schedule 28.04.2022

Инициализатор конструктора С++ 11 с другим синтаксисом
Я оказался на этой странице в справочниках. Я немного запутался с этим примером: class X { int a, b, i, j; public: const int& r; X(int i) : r(a) // initializes X::r to refer to X::a , b{i} // initializes X::b to...
44 просмотров
schedule 07.10.2023

Почему двойные пустые фигурные скобки { { } } создают std::initializer_list‹double› с одним элементом, а не с нулем?
У меня есть следующий конструктор: MyItem(std::initializer_list<double> l) { std::cout << "l size " << l.size() << ")" << std::endl; } Который позже вызывается двойными фигурными скобками: MyItem{{}}...
934 просмотров
schedule 14.05.2024

как перемещать элементы initializer_list?
Допустим, у вас есть переменная типа std::vector<std::string> , и вы инициализируете ее списком инициализаторов: using V = std::vector<std::string>; V v = { "Hello", "little", "world", "of", "move", "semantics" }; Компилятор...
1519 просмотров

Преобразование std::initializer_list в конструкторах
Я новичок в С++ 11, и мне было интересно, как этот код работает внутри: class MyClass { public: MyClass(int a, double b) { cout << "ctor()" << endl; } }; int main() { MyClass i1{4, 7}; return...
87 просмотров
schedule 08.11.2023