initializer-list- все статьи тега


для инициализации массива требуется список инициализаторов, заключенный в скобки

Мой класс Matrix4x4 имеет конструктор, который принимает 9 значений и копирует их во внутренний член T value[4][4] через список инициализаторов. Однако он не компилируется, и я не совсем уверен, почему. В частности, ошибка гласит: array initialization requires a brace-enclosed initializer list. Я использую Visual Studio 2015. template<typename T> Matrix4x4<T>::Matrix4x4( T aa, T ba, T ca, T ab, T bb, T cb, T ac, T bc, T cc ) : value({ { aa, ba, ca, 0 }, ...

std:: список инициализаторов с несколькими типами

У меня возникли проблемы с std::initializer_list. Я свел его к простому примеру: #include <initializer_list> #include <cstdio> class Test { public: template <typename type> Test(const std::initializer_list<type>& args) {} }; int main(int argc, char* argv[]) { Test({1,2}); getchar(); return 0; } При компиляции с использованием g++ test_initializer.cpp -std=c++0x, он компилируется и работает хорошо. Однако, если строка 11 заменена на Te ...

Когда использовать инициализатор, заключенный в скобки?

В C++11 у нас есть новый синтаксис для инициализации классов, который дает нам большое количество возможностей для инициализации переменных. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = std::complex<double>(3,4); auto e = std::complex<double>{3,4}; } { // Example 3 std::string a(3,'x'); std::string b{3,'x'}; // oops ...

Инициализация массива элементов в инициализаторе конструктора

class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Я считаю, что причина заключается в том, что массивы могут быть инициализированы только с = синтаксис, то есть: int arr[3] = {1,3,4}; вопросы как я могу сделать то, что я хочу сделать (что есть инициализации массив в a конструктор (не присваивая элементы в теле.)) Это вообще возможно? стандарт C++03 говорит что-нибудь особенное об инициализ ...