POLISH

Opus magnum C++ Misja w nadprzestrzeń C++14/17 Tom 4

Book information

Publisher
Helion
Year
2020
ISBN
9788328365872
Language
polish
Format
PDF
Filesize
13 MB (14006516 bytes)
Volume
4
Pages
280\277
Time added
2022-02-24 15:35:59

Description

Spis treści 0. Proszę tego nie czytać! 1 0.1. Wyruszamy na kolejną wyprawę! 1 1. Szablony o zmiennej liczbie parametrów 3 1.1. Szablon funkcji o zmiennej liczbie parametrów (i argumentów) 4 1.2. Jak dobrać się do argumentów tkwiących w pakiecie? 11 1.2.1. Ciekawe szablony zwracające rezultat 16 1.3. Szablon klas o dowolnej (zmiennej) liczbie parametrów 18 1.4. Trzy rodzaje pakietów parametrów szablonu 24 1.4.1. Pakiet szablonu będący pakietem wartości 25 1.5. Argumenty pakietu odbierane przez wartość, referencję, adres 30 1.6. Rozwinięcie według wzorca (czyli rozwinięcie „z kontekstem”) 31 1.7. Rozwinięcie pakietu typów w klamrowej liście inicjalizatorów 34 1.7.1. Łatwe narzędzie do wypisania argumentów 34 1.8. Rozwinięcie pakietu na liście parametrów aktualnych innego szablonu 36 1.9. Gdzie można umieścić wyrażenia rozwijające pakiet parametrów 39 1.10. Ćwiczenia 39 2. Cechy języka wprowadzone do standardu C++14 43 2.1. Zapis dwójkowy stałych dosłownych 43 2.2. Separatory cyfr w stałych dosłownych 44 2.2.1. Wypisywanie liczb w postaci binarnej 45 2.2.2. Wczytywanie liczb dwójkowych strumieniem wejściowym 48 2.3. Kompilator rozpoznaje typ rezultatu funkcji 50 2.4. Deklaracja typu rezultatu decltype(auto) 52 2.4.1. Przykład zastosowania konstrukcji decltype(auto) w szablonie funkcji 55 2.5. Szablon definicji zmiennej 59 2.5.1. Jak to drzewiej bywało, czyli świat bez szablonów zmiennych 64 2.5.2. Teraz zobaczysz, jak prosto się to robi z C++14 71 2.5.3. Ciekawe zastosowanie: sprawdzenie cech charakteru danego typu 72 2.5.4. Lubię, nie lubię... 77 2.5.5. Dwa usprawnienia 80 2.5.6. Realizacja tego pomysłu w programie 81 2.6. Przeładowanie globalnych operatorów new, new[ ], delete i delete[ ] 86 2.7. Nowości C++14 w wyrażeniach lambda 94 2.7.1. Przykład uogólnionego wyrażenia lambda 94 2.7.2. Przykład definicji obiektu na liście wychwytywania i jego inicjalizacja 96 2.7.3. Przykład wychwycenia na zasadzie przeniesienia (move) 99 2.8. C++14 a funkcje constexpr 104 2.8.1. Zniesienie wielu ograniczeń w ciele funkcji constexpr 104 2.8.2. Funkcje składowe constexpr w C++14 nie są już automatycznie const 110 2.9. Atrybuty 111 2.9.1. Nowy atrybut [[deprecated]] wprowadzony w C++14 112 2.9.2. Oznaczenie wybranej funkcji jako przestarzałej 113 2.9.3. Argument funkcji uznany za przestarzały 114 2.9.4. Przestarzałe niestatyczne składniki klasy: funkcja składowa i dana składowa 114 2.9.5. Obiekt oznaczony jako przestarzały 115 2.9.6. deprecated a zbiorcza definicja kilku zmiennych (z ewentualną inicjalizacją) 116 2.9.7. Typy, które uznajemy za przestarzałe 116 2.9.8. Przestarzałe synonimy typów (w instrukcjach typedef i using) 118 2.9.9. Oznaczanie atrybutem [[deprecated]] specjalizacji szablonu klasy 118 2.9.10. Oznaczanie atrybutem [[deprecated]] specjalizacji szablonu funkcji 119 2.10. Przewrotu nie było 119 2.11. Ćwiczenia 120 3. Cechy języka wprowadzone do standardu C++17 123 3.1. Specyfikacja wyjątków staje się częścią typu funkcji 123 3.2. Technika „pomijanie kopiowania” bywa teraz obowiązkiem kompilatora 128 3.3. Przydomek alignas a operatory new i delete 134 3.3.1. Przeładowanie globalnych new i delete uwzględniające wyrównanie adresów 135 3.3.2. Jak przeładować wyrównujące operatory new/delete na użytek wybranej klasy 141 3.4. Porządek obliczania składników w złożonych wyrażeniach – nareszcie ustalony 144 3.5. Stała znakowa typu u8 146 3.6. Szesnastkowy zapis liczb zmiennoprzecinkowych 147 3.6.1. Wypisywanie i wczytywanie zmiennoprzecinkowych liczb szesnastkowych 149 3.7. Wyrażenia poskładane w harmonijkę – ułatwienie pracy z pakietem argumentów 152 3.7.1. Pierwszy przykład użycia wyrażenia harmonijkowego w szablonie 152 3.7.2. Harmonijka z dodatkowym wyrażeniem początkowym 155 3.7.3. Cztery formy wyrażenia harmonijkowego 157 3.7.4. Kontekst wyrażenia harmonijkowego – przykład 159 3.8. Dozwolone słowo auto w deklaracji template 161 3.9. Kompilator rozpoznaje typ parametrów klasy szablonowej 166 3.9.1. Wektory czego innego niż widać 170 3.10. Instrukcja if constexpr – prawie jak kompilacja warunkowa 173 3.10.1. Instrukcja if constexpr rozwiązuje problem „lubianych” i „nielubianych” typów 176 3.11. Wyrażenia inicjalizujące w instrukcjach if i switch 179 3.12. Dowiązania strukturalne, czyli łatwe „sięganie do składników” 182 3.12.1. Dowiązanie do tablic zbudowanych na bazie klasy std::array 184 3.12.2. Łatwe sięganie do składników struktur/klas 185 3.12.3. Przystosowanie naszej klasy do obsługi deklaracji dowiązań 192 3.12.4. Przystosowanie cudzej klasy do obsługi deklaracji dowiązań 198 3.13. Operator preprocesora zwany has_include 201 3.14. Nowe atrybuty: maybe_unused, fallthrough i nodiscard 203 3.14.1. Atrybut [[maybe_unused]] 205 3.14.2. Atrybut [[fallthrough]] używany w instrukcji switch 208 3.14.3. Atrybut [[nodiscard]] – nie zlekceważ mnie 210 3.15. Typ std::byte do operacji na surowych blokach pamięci 213 3.16. Modyfikacje istniejących cech języka 222 3.17. Rozluźnienie zasady inicjalizowania typów wyliczeniowych 223 3.18. Modyfikacja deklaracji static_assert 224 3.19. Prostszy sposób zapisu zagnieżdżonych przestrzeni nazw 225 3.20. Dozwolone słowo typename w parametrze określającym inny szablon 229 3.21. Dla zakresowej pętli for funkcje begin i end mogą zwracać odmienne typy 233 3.22. Rozwinięcie pakietu możliwe nawet w deklaracji using 239 3.23. Nowe zasady auto-rozpoznawania typu obiektów mających inicjalizację klamrową 245 3.24. W C++17 agregat może być nawet klasą pochodną 247 3.25. Zmiana typu rezultatu funkcji std::uncaught_exception 250 3.26. Ćwiczenia 254 4. Posłowie – czyli C++20 ante portas 264 Skorowidz 265 ! __PRETTY_FUNCTION__ 8 __has_include 201-202 A agregat może być klasa pochodną (C++17) 247-249 align_val_t 136 alignas a operatory new i delete 134-143 w przeładowanych new i delete dla klasy 141 aligned_alloc (std::) - funkcja bibliot. 140, 144 apostrof jako separator cyfr 44 argument funkcji deprecated 114 array - klasa (std::) 184 atrybut 111-118 carries_dependency 112 deprecated 112 fallthrough 203-212 maybe_unused 203-212 nodiscard 203-212 noreturn 111 auto rozpoznaje typ rezultatu funkcji 50-51 rozpoznawanie w inicjalizacji klamrowej 245-246 w argumencie wyrażenia lambda 96 w deklaracji template auto 161-165 B biblioteka szablonów 4 binarny zapis stałych dosłownych 43 bitset (std::) - klasa biblioteczna 46, 217 byte (std::) - klasa biblioteczna 223 byte (std::) - klasa biblioteczna 213-221 C C++14 - nowe cechy języka 43-122 C++17 - nowe cechy jezyka 123-263 carries_dependency - atrybut 112 class deprecated 116 constexpr a szablon zmiennej 61 funkcja składowa w C++14 110 funkcja w C++11 104 funkcja w C++14 104-110 D dana składowa deprecated 114 decltype użyte w parametrze szablonu 161 decltype(auto) deklaracja typu rezultatu 52-58 nie używać w alternatywnej deklaracji funkcji 55 w szablonie funkcji 55 declval (std::) 197 defaultfloat manipulator 150 deklaracja dostepu 284 dowiązań funkcja get 193, 195 klasa std::tuple_element 193, 196 przystosowanie klasy cudzej 198 przystosowanie klasy swojej 192 std::tuple_size 193, 196 delete a alignas 134-143 globalny, przeładowanie 86-93 a alignas 135 z alignas przeładowanie w klasie 141 deprecated argument funkcji 114 atrybut 112 class, enum 116 funkcja 113 funkcja składowa i dana składowa 114 obiekt 115 specjalizacji szablonu 118 typedef, using 118 z zbiorcza definicja zmiennych 116 dostęp wybiórczo 284 dostępu deklaracja 284 dowiązanie strukturalne 182-200 a const i volatile 183 do elementów klasy std::array 184 do obiektów klas i struktur 185 gdzie stosowaæ 191 jako referencja l-wartości lub r-wartości 190 jako referencji do l-wartości 183 jako referencji do r-wartości 183 dwójkowe liczby wczytane strumieniem 48 dwójkowy zapis a klasa bitset 46 stałych dosłownych 43 E enum deprecated 116 F fallthrough - atrybut 208 false_type (std::) pomocniczy typ biblioteczny 80 free() fun. bibl. do zwalniania pamięci 87 funkcja a noexcept 123-127 auto rozpoznanie typu rezultatu 50-51 constexpr w C++11 104 w C++14 104-110 constexpr w C++14 105 decltype(auto) jako typ rezultatu 52-58 deprecated 113 składowa constexpr w C++14 110 derpecated 114 specyfikacja wyjątków 123-127 G gl-wartość 134 H harmonijka 152-160 składana w lewo 154 składana w prawo 154 z wyrażeniem początkowym 155 has_include (__has_include) 201-202 hexfloat, manipulator 149 I if - instrukcja sterujaca z wyrażeniem inicjalizującym 179-181 if constexpr 16, 173-178 w szablonie 16 inicjalizacja agregatowa 247 bezpośrednia 245 zmiana w standardzie C++17 246 kopiująca 245 w instrukcjach if oraz switch 179-181 zbiorcza 247 inicjalizator klamrowy auto rozpoznawanie jego typu 245-246 is_const 174 is_integral 174 is_pointer 174 is_unsigned 174 K kompilacja warunkowa a instrukcja if constexpr 173-178 kontekst rozwnięcia pakietu 31-33 wyrażenia harmonijkowego 157, 159 konwersja chwilowo materializujaca 134 L lambda (wyrażenie) uogólnione 94 wychwycenie obiektu na zasadzie przeniesienia (move) 99 lista wychwytywania na niej definicje obiektów lokalnych 96 M makrodefinicja __PRETTY_FUNCTION__ 8 malloc (std::) 87 manipulator hexfloat 149 maybe_unused - atrybut 205 move 102 N new a alignas 134-143 globalny, przeładowanie 86-93 a alignas 135 z alignas przeładowanie w klasie 141 niby-rekurencja 14 nodiscard - atrybut 210 noexcept w typie funkcji 123-127 noreturn - atrybut 111 nothrow_t 136 O obiekt deprecated 115 operator decltype użyty w parametrze szablonu 161 delete globalny, przeładowanie w C++14 86-93 sizeof... 8 P pakiet argumentów sz. funkcji 6 a wskażniki z przydomkami const 31 a wyrażenia harmonijkowe 152-160 jak dobrać się do argumentów 11-17 odbierane arg. przez wart., ref., adres 30 rozwnieta postać 7, 152 z referencjami l-wartości 30 z referencjami obiektów stałych 31 z referencjami r-wartości 30 ze wskaźnikami 31 pakiet argumentów szablonu rozwinięcie z kontekstem 31-33 pakiet parametrów szablonu 6 będących nazwami innych szablonów 24 będących typami 24 bedących wartościami 24-25 trzy rodzaje 24-29 pakietu rozwinięcie gdzie może wystąpić 39 w nazwie innego szablonu 36-38 z operatorem przecinek 36 parametr szablonu określający inny szablon 229-232 podwalina typu wyliczeniowego 214 pomijanie kopiowania 128-133 porządek obliczania składników wyrażeń 144-145 postfix wyrażenia 145 pr-wartość 134 PRETTY_FUNCTION 8 printf 87 przecinek (operator) a rozwinięcie pakietu 35 przestrzeń nazw a zagnieżdżenie nowy zapis w C++17 225-228 przeładowanie globalnych new, delete 86-93 operatora delete globalnego w C++14 86-93 puts 87 R rekurencja 11, 14, 52 niby-rekurencja 14 rozwinięcie pakietu argumentów 7 dwukrotne 33 gdzie może wystapić? 39 na liście inicjalizacyjnej konstruktora 23 na liscie parametrów aktualnych innego szablonu 36-38 na liście pochodzenia klasy 22 równoważne 33 typów w { } 34-35 w deklaracji using 239-244 z kontekstem 31-33 zapętlone 33 rozwinięta postać argumentów szablonu 10 pakietu 13, 152 S separatory cyfr w stałych dosłownych 44-49, 148 silnia 108 sizeof... 8 specjalizacja deprecated 118 szablonu o zmiennej liczbie parametrów 23 szablonu zmiennej 63 specyfikacja wyjątków w C++17 123-127 sprytny wskaźnik unique_ptr 99 static_assert modyfikacja w C++17 224 stała dosłowna z separatorami cyfr 44-49 zapisana dwójkowo 43 znakowa typu u8 146 std::array 184 std::false_type - pomocniczy typ 80 std::strtod 151 std::true_type - pomocniczy typ 80 std::unique_ptr 99 stdio 87 strtod - funkcja biblioteczna 151 strumienie a separatory cyfr 45 switch z wyrażeniem inicjalizującym 179-181 szablon definicji zmiennej 59-85 szablon funkcji deprecated 119 zmienna liczba parametrów 4-10 szablon klas deprecated 118 o zmiennej liczbie parametrów 18-23 szablon zmiennej 59-85 a constexpr i const 61 przykład zastosowania 72 specjalizacja 63 szablony o zmiennej liczbie parametrów 3-42 szesnastkowy zapis liczb zmiennoprzecinkowych 147-151 wypisyw. i wczyt. ich strumieniami 149 T Taylora wzór 108 template auto 161-165 to_integer (std::) - funkcja biblioteczna 214, 217 to_ulong (std::) - funkcja biblioteczna 50 true_type (std::) pomocniczy typ biblioteczny 80 trygonometryczne tablice 110 tuple_element (std::) 193, 196 tuple_size (std::) 193, 196 typ deprecated 116 wyliczeniowy enum jego inicjalizacja liczb¹ 223 typedef deprecated 118 typename 229-232 U uncaught_exception (std::) zmiana typu rezultatu (C++17) 250-253 uogólnione wyrażenie lambda 94 using deklaracja z rozwinięciem pakietu klas podst. 239-244 deprecated 118 V valgrind - program diagnostyczny 86 W wielodziedziczenie 239 wielokropek w deklaracji argumentów fun. 6 w ostrym nawiasie 6 w wyrażeniu rozwijającym 32 wybiórcze udostępnianie 284 wychwycenie obiektu na zasadzie przeniesienia (move) 99 wyrażenia końcówkowe 145 postfix 145 złożone porządek ich obliczania 144-145 wyrażenia harmonijkowe 152-160 cztery formy 157 tzw. kontekst 159 wyrażenie incjalizujące w instrukcjach if oraz switch 179-181 lambda uogólnione 94 X x-wartoœæ 134 Z zagnieżdżona przestrzeń nazw - nowy zapis C++17 225-228 zakresowe for a funkcje begin, end - wg zasad C++17 233-238 jak w C++11, adaptować klasę 233 jak w C++17, adaptować klasę 234 zapis dwójkowy stałych dosłownych 43 znakowa stała u8 146

Similar books