Update To C++17

Posted By: ELK1nG

Update To C++17
Published 10/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.25 GB | Duration: 6h 8m

Learn about the new features in C++17!

What you'll learn
Extend and update your knowledge of C++
Know the new language features in C++17
Understand the new language features in C++17
Be able to use the new language features in C++17 idiomatically
Requirements
Familiarity with C++11 and C++14
Some knowledge of multithreading in C++11
A compiler which supports C++17
Description
This course is intended for programmers who are familiar with C++11 and C++14 to at least Intermediate level.While C++17 turned out not to be as big a release as originally planned, it still has many new features and improvements to the language. It continues the "Modern C++" theme of adding better abstractions, providing more support for a functional style of programming and doing more work at compile time. There are many features which library developers and compile-time programmers will find useful, along with features like structured bindings which every C++ application developer will want to use!The course begins with the changes to the core C++ language. These include structured bindings, which make working with compound objects much easier, and initializers in if statements, which will enable you to write code which branches on the return value from a function call much more concisely.We then cover the changes to the C++ Standard Library, starting with new functions for converting between strings and numbers. These are much more efficient than the older alternatives and are ideal for writing code that processes large strings such as XML or JSON. The string_view class, which never creates temporary objects, provides a convenient way of referring to elements in such strings, as well as a more efficient way to pass string literals to function arguments which expect a std::string. The "vocabulary types", std::variant, std::optional and std::any, provide safer alternatives to idioms which derive from C (unions, null/non-null pointers and pointer to void respectively.) We also cover improvements to working with std::map and std::multimap, and a faster way of searching strings.The following two sections deal with two libraries which are completely new in C++17: the filesystem interface and parallel versions of library algorithms. Finally, we cover compile-time programming, including the very important "constexpr if" feature. Now you can write programs which execute at compile-time, without having to be a template metaprogramming guru!Each lecture contains a demonstration of the features being covered and has downloadable exercises, with solutions. These are fairly simple and test your understanding of the topic you have just learnt.After successfully completing this course, you will have a good knowledge of the new features in C++17 and how to use them.

Overview

Section 1: Introduction

Lecture 1 Introduction

Section 2: New Language Features in C++17

Lecture 2 Constructors and Argument Deduction

Lecture 3 Attributes in C++17

Lecture 4 Structured Bindings

Lecture 5 Structured Bindings and Maps

Lecture 6 If Statements in C++17

Lecture 7 Switch Statements in C++17

Lecture 8 Order of Evaluation

Lecture 9 Order of Evaluation in C++17

Lecture 10 Functions and Order of Evaluation in C++17

Lecture 11 Copy elision

Lecture 12 Inline variables

Lecture 13 Static Data Members

Lecture 14 Noexcept

Lecture 15 Lambda Expressions in C++17

Lecture 16 Miscellaneous Language Changes

Section 3: New Library Features in C++17

Lecture 17 Types and Literals

Lecture 18 Converting Strings to Numbers

Lecture 19 Converting Numbers to Strings

Lecture 20 String View Overview

Lecture 21 String View Usage

Lecture 22 String View Caveats

Section 4: Vocabulary Types

Lecture 23 Vocabulary Types Introduction

Lecture 24 Variant Type

Lecture 25 Variant Type Continued

Lecture 26 Variant Type Applications

Lecture 27 Optional Type Introduction

Lecture 28 Optional Type

Lecture 29 Any Type

Lecture 30 Examples of Vocabulary Types Usage

Section 5: Library Changes in C++17

Lecture 31 Map Insertion

Lecture 32 Map Emplace

Lecture 33 Key Modification in Associative Containers

Lecture 34 Merging Associative Containers

Lecture 35 Apply and Invoke Functions

Lecture 36 Tuples in C++17

Lecture 37 Miscellaneous Container Operations

Lecture 38 Chrono Library in C++17

Lecture 39 Mathematical Algorithms in C++17

Lecture 40 Miscellaneous Algorithms in C++17

Lecture 41 Searching in C++17

Section 6: Filesystem Interface

Lecture 42 Filesystem Introduction

Lecture 43 The Path Class

Lecture 44 File Operations

Lecture 45 File Permissions

Lecture 46 Directory Operations

Section 7: Multithreading and Parallel Processing

Lecture 47 Locks and Mutexes in C++17

Lecture 48 Shared Mutexes

Lecture 49 Parallelism and Vectorization Overview

Lecture 50 Code Execution and Parallelism

Lecture 51 Execution Policies

Lecture 52 Algorithms and Execution Policies

Lecture 53 New Parallel Algorithms

Lecture 54 New Parallel Algorithms Continued

Section 8: Compile-time Programming

Lecture 55 Constexpr If Statement

Lecture 56 Constexpr If Continued

Lecture 57 Structured Bindings and Custom Types

Lecture 58 Constexpr and Lambda Expressions

Lecture 59 Fold Expressions

Lecture 60 Alias Templates

Lecture 61 CTAD and Custom Types

Lecture 62 Template Auto Parameters

Section 9: Conclusion

Lecture 63 C++17 Summary

Programmers with a good knowledge of C++11/14 who want to learn about the new features in C++17