Вопросы с тегом «initializer-list»

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

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}; Вопросы Как я могу делать то, что хочу...

97
Когда использовать инициализатор в фигурных скобках?

В 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};...

96
Почему std :: initializer_list не является встроенным языком?

Почему не std::initializer_listвстроен базовый язык? Мне кажется, что это довольно важная особенность C ++ 11, но у него нет собственного зарезервированного ключевого слова (или чего-то подобного). Вместо этого initializer_listэто просто класс шаблона из стандартной библиотеки, который имеет...

95
Могу ли я инициализировать список векторов типа «только перемещение»?

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

93
Как будет выглядеть расширенный список инициализаторов std :: map?

Если он вообще существует, как бы выглядел std::mapрасширенный список инициализаторов? Я пробовал несколько комбинаций ... ну, всего, что мог придумать с GCC 4.4, но не нашел ничего компилированного....

50
Инициализируйте несколько постоянных членов класса, используя один вызов функции C ++

Если у меня есть две разные постоянные переменные-члены, которые нужно инициализировать на основе одного и того же вызова функции, есть ли способ сделать это, не вызывая функцию дважды? Например, класс дроби, где числитель и знаменатель постоянны. int gcd(int a, int b); // Greatest Common Divisor...