Описание тега brace-initialization
0
ответов
Конвертирующий конструктор не принимает список в скобках
Поэтому, пока я возился с конструкторами, я сделал этот код: class super { public: int duper, duperer; friend ostream& operator << (ostream&, super&); friend super operator+ (super& uno, super& dos); friend int main(); supe…
11 май '18 в 23:40
1
ответ
Проблема с инициализацией объекта из списка инициализаторов
У меня есть следующий код: class A { public: A(std::vector<std::shared_ptr<int>>){} }; auto x = std::make_shared<int>(0); auto y = std::make_shared<int>(1); auto list = {x, y}; auto res = std::make_shared<A>({x, y}); В …
07 авг '14 в 09:53
3
ответа
Зачем им специальные списки инициализаторов, а не обрабатывать их одинаково?
Скажи у меня есть переменная auto x что я хочу инициализировать в 7 используя инициализацию скобок, просто: auto x {7}; За исключением того, что я узнал, что x - это не целое число, а сам список инициализации. Зачем? Есть ли конкретная причина, поче…
15 май '13 в 17:48
0
ответов
Как передать braced-init-list в конструктор `std::array`?
Можно ли передать точный список braced-init-list std::arrayконструктор? Это может быть необходимо, так как std::array не поддерживает присвоение списка инициализаторов. Попытка адаптировать принятый ответ на этот вопрос: Как создать объект std:: arr…
14 ноя '16 в 23:54
1
ответ
Объектная буквальная альтернатива в C++
Я исхожу из языка, похожего на Javascript, где я могу создавать такие функции. function tween(obj, tweenParams, time, tweenOptions); Это используется как: tween(mySprite, {x: 10, y: 10}, 1, {startDelay: 1, loops: 5}); Если неясно, это приводит к том…
20 июл '17 в 20:13
2
ответа
Несовместимость инициализации Visual C++ с gcc и clang
Следующий кусок кода печатает 0 скомпилирован с vC++ и печатает 1 скомпилировано с g++ или clang++ : #include <iostream> #include <vector> struct S { S() = default; std::vector<int> v{0}; }; int main() { std::vector<S> s{{}};…
04 авг '16 в 08:25
1
ответ
Инициализировать частный агрегат из списка фигурных скобок
Если я попытаюсь скомпилировать class triangle { private: std::array<std::array<double, 2>, 3> m_vertices; }; triangle const unit_triangle{ { { { 0, 0 }, { 1, 0 }, { 0, 1 } } } }; Я получаю сообщение об ошибке невозможно преобразовать из…
21 мар '17 в 20:15
1
ответ
Многомерный список инициализаторов в скобках
То, что я хочу, - это возможность генерировать матрицу 5x5 через заключенный в скобки список инициализаторов. Так что это может выглядеть позже так: enum class MyListType { EMPTY, A }; auto matrix = { {MyListType::EMPTY, MyListType::EMPTY, MyListTyp…
29 авг '15 в 14:38
2
ответа
Как я должен инициализировать скобками std:: массив std:: пар?
std::array<std::pair<int, int>, 2> ids = { { 0, 1 }, { 1, 2 } }; Ошибка VS2013: ошибка C2440: 'initializing': невозможно преобразовать из 'int' в 'std::pair' Ни один конструктор не может принять тип источника, или разрешение перегрузки к…
27 дек '14 в 16:29
1
ответ
Тонкости инициализации скобки
При попытке использовать инициализацию скобок, тонкость, которую можно найти, заключается в использовании std::vector, как показано в следующем примере: #include <iostream> #include <string> #include <vector> using namespace std; t…
01 мар '14 в 23:03
1
ответ
Инициализация вложенного списка не соответствует конструктору, принимающему initializer_list в качестве второго аргумента
Я разрабатываю структуру данных, способную описать семантику некоторых файлов XML в C++. Идея заключается в проверке наличия и / или правильной последовательности различных элементов при сохранении текста, который они содержат, в объект QHash с иден…
01 авг '14 в 00:42
2
ответа
Почему передача инициализированного скобкой временного по адресу требует явного приведения к тому же типу в MSVS
Я пытался сделать свой код менее раздутым при работе с Windows API, заменив двухлинейные TEMP t{0,1,2}; // let's say it's struct TEMP {int a; int b; int c} SomeVeryVerboseFunctionName(&t); с однострочником SomeVeryVerboseFunctionName(&TEMP{0…
08 июл '15 в 15:15
1
ответ
Почему GCC 6.3 компилирует этот код Braced-Init-List без явной поддержки C++11?
У меня есть вопрос о различных значениях списка в фигурных скобках. Я знаю, что C++03 не поддерживает C++11 initializer_list, Тем не менее, даже без -std=c++11 флаг компилятора, gcc 6.3 будет правильно инициализирован interpolate с этим кодом: map&l…
20 июн '17 в 13:39
1
ответ
Почему реализация make_tuple не возвращается через инициализацию фигурной скобки?
Чтобы понять вопрос, сначала прочтите этот ответ. Я проверил разные исторические make_tuple реализации (в том числе Clang версии 2012 года). До C++17 я бы ожидал, что они return {list of values ... } но все они создают кортеж, прежде чем возвращать …
31 янв '18 в 01:25
1
ответ
Пользовательский инициализатор скобок
Допустим, у меня есть эта структура: struct MyStruct { int field1; char *field2; MyStruct(int a, char* b): field2(b) { field1 = doStuff(a); } MyStruct(int a): MyStruct(a, nullptr) {} ~MyStruct(); } Насколько я знаю, это не агрегат, поскольку у меня …
09 авг '17 в 17:31
1
ответ
Ошибка автоматического вывода типа с инициализацией фигурной скобки при вызове функции с unique_ptr
Учитывая приведенный ниже код, в чем разница между unique_ptr и Bar, которые сделали bar ( { new int } ); хорошо но не foo( { new int } ); #include <memory> struct Bar { Bar() = default; Bar( int* m ) : m_( m ) {}; ~Bar() { if ( m_ ) delete m_…
28 янв '14 в 12:33
2
ответа
Как предотвратить использование std::string конструктором initializer_list?
Я хочу, чтобы следующий код выводил "test" вместо "X" для случая при использовании std::string используя ту же инициализацию, что и другие основные типы. std::string теперь вызывает конструктор с initializer_list и, следовательно, специализация шабл…
29 июл '14 в 17:18
1
ответ
Как мне инициализировать объект std:: array<std:: array <T, 2>, 2>?
Я пытаюсь инициализировать объекты типа вещь: template<typename T> struct thing : std::array<std::array<T, 2>, 2> { }; thing<int> t1 {{ {1,2}, {3,4} }}; Я получил: error: no matching function for call to ‘thing<int>::th…
25 июл '14 в 14:30
1
ответ
Гарантирует ли инициализация класса скобками, что все члены инициализируются по умолчанию?
В следующем примере выполняется инициализация Vec3 с фигурными скобками гарантируют, что все x, y, а также z инициализировать по умолчанию (func_a()), в отличии от func_b() где все члены получают неопределенные значения? struct Vec2 { float x, y; };…
04 сен '18 в 07:58
2
ответа
Альтернатива инициализации скобки в g++ 4.4
Я хочу инициализировать этот вектор-вектор-строки следующим образом, компилируя с g++ 4.4.7 (из-за политики операций я не могу использовать более новую версию). vector<vector<string>> phs2tm_vec { { "manager_n", "manager_a", "manager_e",…
12 сен '13 в 22:08