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

Какие примеры жадных списков инициализаторов скрываются в стандартной библиотеке?
Начиная с C++11, контейнеры стандартной библиотеки и std::string имеют конструкторы, принимающие список инициализаторов. Этот конструктор имеет приоритет над другими конструкторами (даже, как указано @JohannesSchaub-litb в комментариях, даже...
1060 просмотров

Почему инициализация фигурных скобок С++ 11 не работает в списке инициализации конструктора, когда инициализация скобок работает?
Чем инициализация {} в списке инициализации конструктора отличается от инициализации () при инициализации ссылки на абстрактные типы? Возьмите класс Bar ниже: class AbstractBase { public: AbstractBase() {} virtual ~AbstractBase() =...
1667 просмотров

Инициализация фигурной скобки MSVC с двойными значениями нарушает стандарт?
Проверьте эту простую программу: int main() { float f2 = 7.2; // OK, with warning float f3 = 7.199999809265137; // OK, no warning float f4{ 7.2 }; // Fails float f5{ 7.199999809265137 }; // OK, no warning float f6 = { 7.2 }; //...
344 просмотров

Почему явные конструкторы не совпадают с аргументами функции, инициализирующей список?
Чтобы проиллюстрировать проблему, давайте рассмотрим эти два простых определения, Bar — это пользовательский тип с явным конструктором из int: struct Bar { explicit Bar(int a) {} }; void f(Bar) {} Теперь, как указано в...
117 просмотров

Используйте фигурные скобки ({}) или знак равенства (=) при инициализации переменной
Когда я читаю Язык программирования C++, 4-е издание , чтобы инициализировать переменную, автор сказал, что лучше использовать {} , чем = для инициализации переменной: Но я вижу, что больше людей используют = , чем {} . Итак, какой...
5779 просмотров
schedule 04.08.2023

Скопировать elision для инициализации списка, где это указано в стандарте?
В [dcl.init]/17.6 это явно написано, что для случая инициализации в скобках происходит удаление копии: Если выражением инициализатора является значение prvalue, а версия исходного типа без уточнения cv относится к тому же классу, что и класс...
582 просмотров

Инициализация смешанного списка в C++11
Что касается инициализации списка c++11 , могу ли я инициализировать список с помощью элемент и другой список? Допустим, у меня есть следующий код: #include <vector> class Foo { public: Foo(int value){m_v=value;}...
186 просмотров

Почему это сужающее преобразование не обнаружено?
при создании переменных с использованием инициализации списка (например, int x{ 5 }; ) стандарт §8.5.4 гласит: Если для преобразования какого-либо из аргументов требуется сужающее преобразование […], программа имеет неправильный формат....
909 просмотров

Синтаксис инициализации объекта в C++ (T obj = {} vs T obj{})
В чем разница между двумя формами инициализации, T obj = {…} и T obj{…} ? Сначала я думал, что T obj = {…} — это сокращение от T obj = T{…} , когда временный объект копируется в наш новый объект. Это, хотя и не выполняет конструктор копирования...
87 просмотров

Powershell: как инициализировать массив байтов, как в C?
В C вы можете сделать что-то вроде: uint16_t datalen = 1024; uint16_t crc = 0x1021; uint8_t myHeader = {0x41, 0xBE, 0x21, 0x08, datlen/256, datalen%256, crc/256, crc%256}; Теперь, как я могу выполнить подобную инициализацию массива в...
54 просмотров

Почему я не могу использовать инициализацию списка для структуры с наследованием?
У меня есть куча простых структур, унаследованных от какого-то интерфейса, и я не могу использовать для них инициализацию списка: https://godbolt.org/z/PWjPzK #include <iostream> #include <string> class Foo { public: virtual void...
37 просмотров

Двойные фигурные скобки необходимы для инициализации списка контейнера std::array
Инициализация списка контейнеров пользовательских типов ведет себя не так, как я ожидал. См. этот фрагмент: #include <array> struct A { char C; int s; }; int main(int argc, char * argv[]) { A x = {'x'}, y = {'y'};...
82 просмотров

В С++ в чем разница между инициализацией списка и другой инициализацией?
В главе C++ Primer 2.2.1 Variable Definitions они сказали, что инициализация с помощью фигурной скобки называется инициализацией списка, и они сказали При использовании с переменными встроенного типа эта форма инициализации имеет одно важное...
62 просмотров