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

6
Инициализация массива членов в инициализаторе конструктора
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}; Вопросы Как я могу делать то, …


8
initializer_list и семантика перемещения
Могу ли я перемещать элементы из std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Поскольку std::intializer_list<T>требует особого внимания компилятора и не имеет семантики значений, как обычные контейнеры стандартной библиотеки C ++, я …

3
Когда использовать инициализатор в фигурных скобках?
В 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}; …

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

5
Могу ли я инициализировать список векторов типа «только перемещение»?
Если я пропущу следующий код через мой снимок 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() }; } Очевидно, это не может работать, потому что std::unique_ptrне копируется: ошибка: использование удаленной функции 'std :: …

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

3
Инициализируйте несколько постоянных членов класса, используя один вызов функции C ++
Если у меня есть две разные постоянные переменные-члены, которые нужно инициализировать на основе одного и того же вызова функции, есть ли способ сделать это, не вызывая функцию дважды? Например, класс дроби, где числитель и знаменатель постоянны. int gcd(int a, int b); // Greatest Common Divisor class Fraction { public: // …

6
Невинный диапазон на основе петли не работает
Следующее не компилируется: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Попробуй это на Годболте Ошибка компилятора: error: assignment of read-only reference 's' Теперь в моем реальном случае список состоит …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.