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

Вырезание скобок в инициализации std :: array
Предположим, нужно инициализировать std::array . Ничего страшного, если использовать двойные фигурные скобки: std::array<int, 2> x = {{0, 1}}; std::array<int, 2> x{{0, 1}}; Также можно использовать одиночные фигурные скобки в...
6563 просмотров

std :: vector init с фигурными скобками дважды вызывает конструктор копирования
Почему, когда я инициализирую std :: vector с фигурными скобками std::vector<TS> vec {ts1, ts2}; Компилятор дважды вызывает оператор конструктора копирования? С другой стороны - с push_back он вызывается только один раз. #include...
1337 просмотров

Почему вариационная функция не может использовать аргумент инициализации списка в С++ 11?
Пример кода: #include <unordered_map> int main() { std::unordered_map<int, std::pair<int, int>> map; map.emplace(1, {1, 1}); return 0; } Где emplace() имеет подпись, например: template <class......
527 просмотров

Является ли инициализация списка новой структуры {} с использованием специфичных для компилятора переменных?
Использование Visual Studio 2013 и компилятора C++ для написания еще одного связанного списка, и это произошло методом проб и ошибок. Это относится к Visual C++ или является частью стандарта? Мне очень нравится этот синтаксис. Это очень чисто....
135 просмотров
schedule 11.06.2024

Перенаправленное построение на месте и инициализация списка
Под пересылаемой конструкцией на месте я понимаю std::allocator::construct и различные методы emplace, например, std::vector::emplace_back . Я просто обнаружил, что перенаправленная конструкция на месте в С++ не использует (не может?) Синтаксис...
479 просмотров

Когда компилятору разрешено оптимизировать инициализацию стиля авто + скобки?
Предположим, у вас есть класс под названием Product, определенный следующим образом: class Product { public: Product(const char *name, int i); Product(Product &&rhs); Product(const Product &rhs);...
182 просмотров

Приоритет инициализации списка от объекта того же типа
#include <iostream> #include <initializer_list> using namespace std; struct CL { CL(){} CL (std::initializer_list<CL>){cout<<1;} CL (const CL&){cout<<2;} }; int main() { CL cl1; CL cl2 {cl1};...
277 просмотров

Неявные преобразования C++ с инициализаторами фигурных скобок
Недавно я где-то читал (не помню где) об использовании фигурных скобок для разрешения нескольких пользовательских преобразований, но, похоже, есть разница между преобразованием с помощью конструктора и преобразованием с помощью метода преобразования,...
1081 просмотров

универсальная и равномерная инициализация: от `double` до `int`
Visual Studio 2015, обновление 3. С++ 11\С++ 14. Для int : constexpr int ci1 {50}; constexpr int ci2 {500}; char c1 {ci1}; // OK char c2 {ci2}; // compilation error т.е. универсальная и равномерная инициализация может проверять...
149 просмотров

прямая инициализация против инициализации прямого списка (C++)
DIRECT- VS COPY-INITIALIZATION Через этот вопрос ( Это прямая инициализация или инициализация копированием? ) Я узнал разницу между прямой инициализацией и инициализацией копированием : direct-initialization...
4283 просмотров
schedule 16.07.2023

Почему в этом примере член не инициализируется нулем?
Это касается конкретно C ++ 11: #include <iostream> struct A { A(){} int i; }; struct B : public A { int j; }; int main() { B b = {}; std::cout << b.i << b.j << std::endl; } Компиляция с g ++ 8.2.1:...
1214 просмотров

GCC не поддерживает исключение фигурных скобок в новом выражении
Рассмотрим эту программу: struct S { int m; }; int main() { S s_arr[1]{0}; S *s_new = new S[1]{0}; int i_arr[1][1]{0}; int (*i_new)[1] = new int[1][1]{0}; return 0; } Я думаю, что все четыре переменные в основной...
81 просмотров

Почему синтаксис инициализатора с двумя элементами помещает один элемент в вектор строк вместо двух?
Почему я получаю один элемент в b вместо двух? В a я получаю один, как и ожидалось, а в c три элемента, как и ожидалось. Тот, у которого два значения, является каким-то особым случаем. #include <string> #include <vector>...
56 просмотров
schedule 05.05.2023

Предотвращает ли стандарт сужение преобразования литерала с достаточно малыми литеральными значениями в вариативных шаблонах?
Вот минимальный пример: #include <array> template <class... T> constexpr std::array<unsigned char, sizeof...(T)> act(T... aArgs) { return std::array<unsigned char, sizeof...(T)>{aArgs...}; } int main() { act(5,...
113 просмотров

Могу ли я инициализировать std :: vector по списку с идеальной пересылкой элементов?
Я заметил, что инициализация aggregate list для std :: vector выполняет инициализацию копирования , когда более применимо перемещение . В то же время несколько emplace_backs делают то, что я хочу. Я мог придумать только это несовершенное...
266 просмотров