Запитання з тегом «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 та перемістити семантику
Чи дозволяється мені переміщувати елементи з a 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 ++, …


6
Чому std :: initializer_list не є вбудованою мовою?
Чому не std::initializer_listвбудована основна мова? Мені здається, що це досить важлива особливість C ++ 11, і все ж він не має власного зарезервованого ключового слова (або чогось іншого). Натомість initializer_listце просто клас шаблону зі стандартної бібліотеки, який має спеціальне, неявне зіставлення з нового синтаксису дужок-init-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 …

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}; auto …


3
Ініціалізуйте кілька членів постійного класу, використовуючи одну виклик функції C ++
Якщо у мене є дві різні змінні постійних членів, які обидві потрібно ініціалізувати на основі одного і того ж виклику функції, чи є спосіб зробити це без виклику функції двічі? Наприклад, клас дробу, де чисельник і знаменник є постійними. int gcd(int a, int b); // Greatest Common Divisor class Fraction …

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; } Спробуйте це на Godbolt Помилка компілятора: error: assignment of read-only reference 's' Тепер у моєму фактичному випадку список складається …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.