Pytania otagowane jako initializer-list



8
initializer_list i przenoszenie semantyki
Czy mogę przenosić elementy z 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? } } Ponieważ std::intializer_list<T>wymaga specjalnej uwagi kompilatora i nie ma semantyki wartości, takiej jak zwykłe kontenery biblioteki standardowej C ++, …

3
Kiedy używać inicjatora w nawiasach?
W C ++ 11 mamy nową składnię do inicjowania klas, która daje nam dużą liczbę możliwości inicjalizacji zmiennych. { // 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 = …

6
Dlaczego std :: initializer_list nie jest językiem wbudowanym?
Dlaczego nie std::initializer_listma wbudowanego języka podstawowego? Wydaje mi się, że jest to dość ważna cecha C ++ 11, a mimo to nie ma własnego zarezerwowanego słowa kluczowego (lub czegoś podobnego). Zamiast tego initializer_listjest to po prostu klasa szablonu z biblioteki standardowej, która ma specjalne, niejawne mapowanie z nowej składni listy …

5
Czy mogę zainicjować listowo wektor typu tylko do przenoszenia?
Jeśli przekażę następujący kod przez moją migawkę GCC 4.7, spróbuje skopiować unique_ptrs do wektora. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Oczywiście to nie może działać, ponieważ std::unique_ptrnie można go skopiować: błąd: użycie usuniętej funkcji 'std :: unique_ptr …



6
Niewinny zakres oparty na pętli nie działa
Nie można skompilować: #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; } Wypróbuj na Godbolt Błąd kompilatora to: error: assignment of read-only reference 's' Teraz w moim przypadku lista składa się …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.