educative.io

C++17 in Detail: A Deep Dive (Bartłomiej Filipek)


std::variant - Ambiguity and Complex Types What if we want to create objects of complex types? What if there's ambiguity when you initialize std::variant? Read below to find out the answers. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5168859359215616). std::variant - Visitors for std::variant This lesson explains std::visit, it''s declaration and use. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5684659698532352). std::variant - Visiting Multiple Variants This lessons discusses visiting multiple variants. Let's take a look at it in detail! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5694228885667840). std::variant - Wrap up Here's a summary of all the concepts we learned in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5700220365045760). std::variant - Performance & Memory Considerations Let's have a quick look at the performance and memory conisderations of std::variant. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5140013585006592). std::variant - Quiz Here's a short quiz to test your understanding of this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5711627999510528). std::variant - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5453970798542848). Searchers and String Matching - Overview of String Matching Algorithms This lesson will provide an overview of matching algorithms. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6262203042758656). std::any - Object Creation The different methods of in-place object creation are discussed briefly in this lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5074232639750144). Searchers and String Matching - New Algorithms Available in C++ 17 The lesson provides a brief overview of how C++17 has updated std::search and provided new searcher algorithms. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5145726128488448). String Conversions - Elementary string conversions This lessons discusses the shortcomings of the string conversion functions present in older versions of C++ and the new more efficient string manipulation functions introduced in C++ 17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5140484120903680). String Conversions - The benchmark This section introduces a benchmark that measures performance of from_chars and to_chars against other conversion methods. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5656990445469696). Filesystem - Overview This section deals with the filesystem library in C++17. We'll be looking at the new features of the filesystem one by one. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5716976106209280). Filesystem - Demo Example for Path Object This lesson shows a demo code sample that we are going to discuss in the upcoming lessons. The code basically displays files in a given directory. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5733543942553600). std::string_view - General Solution There are always some steps you can take to ensure that your string_view will work with third party APIs. Find out more below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5695733197963264). Filesystem - The Directory Entry & Directory Iteration In this lesson, we'll see different ways of iterating over a path. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5681325730168832). Filesystem - Examples of using std:filesystem In this section, we'll analyze a few examples where `std::filesystem` is used. We'll go from a simple code - loading a file into a string, and then explore creating directories, or filtering using `std::regex`. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5645405777821696). Filesystem - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4769056789889024). std::string_view - Quiz Have questions about Quiz? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5664520798208000). std::string_view - Performance & Memory Considerations It's time to see how string_view fares in terms of memory efficiency. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5182776663867392). Filesystem - Introduction Here's a brief look at what we'll tackle in this section View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5135115613110272). std::string_view - Wrap Up Let's summarise this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6308676570710016). std::string_view - Example: Working with Different String APIs Does string_view offer usage with APIs like CString and QString? Let's find out. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5648857924894720). std::string_view - Example: String Split Here, we'll determine whether string_view can be used for splitting a string into several view objects. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5199054589919232). Searchers and String Matching - Introduction The lesson pitches a brief overview of why and what you'll be learning next. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5655973075091456). String Conversions - Introduction Let's take a look at the concepts to look forward to in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6253059428581376). Searchers and String Matching - Examples - Using Searchers In this lesson you will see the results of various experiments done using searchers. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5192360883388416). String Conversions - from_chars This lesson mainly elaborates on from_chars function types. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5712809987932160). String Conversions - Summary Here's a summary of everything we learned in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5766872888770560). Filesystem - The Path Object Let's explore the Path Object in detail! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5713773067239424). Filesystem - Path Composition C++ allows us to create a path in the form of a string. Let's find out how. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5708676081909760). Filesystem - Error Handling & File Races Let's briefly discuss how errors are handled in std:filesystem library. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5074123587846144). Parallel STL Algorithms - Erroneous Techniques in Parallel Algorithms This sections discusses zip iterators and erroneous technique in detail. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5735625055535104). Parallel STL Algorithms - Quiz Now that you're familiarized with the concept of Parallel Algorithms. Let's put them to test! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5642158849654784). Parallel STL Algorithms - Benchmark II This section gives another example of benchmark measurement by computing the sum of all elements in a vector. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5669327940354048). Parallel STL Algorithms - Processing Containers This section discusses how to process several containers and the same time using the example of separate containers of indices. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6246902257418240). Parallel STL Algorithms - Exceptions This section touches upon the exceptions that can arise while using execution policies. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5732584218689536). Parallel STL Algorithms - Benchmark I This section will give a comparison of sequential vs parallel computing using Run and Measure. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5636411310997504). Parallel STL Algorithms - For_Each and Reduce Algorithms This lesson goes into the details of reduce algorithm and its working. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5169378513387520). Removed or Fixed Language Features - Removed Elements The new update has deprecated some existing features. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5736875226562560). Parallel STL Algorithms - More Algorithms This section introduces two more algorithms, the fused and scan algorithms! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5121002350575616). Removed or Fixed Language Features - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4676100681629696). Removed And Deprecated Library Features - Introduction Have a look at what we'll be covering in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5887755647188992). Parallel STL Algorithms - Performance of Parallel Algorithms This lesson explains in detail the performance of parallel algorithms and the factors that affect it. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5768799382929408). Removed And Deprecated Library Features - Removed std::random_shuffle This lessons will provide a better alternative to random_shuffle. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6570404731682816). Parallel STL Algorithms - Counting Elements This lesson discusses in detail, an algorithm that counts the number of elements in a container. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5655498145660928). Parallel STL Algorithms - Summary This section provides a summary of all the major concepts discussed throughout the section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5721125245943808). Removed And Deprecated Library Features - `std::iterator` Is Deprecated In C++17 you must not derive from `std::iterator`. Instead it requires you to write the trait `typedefs` explicitly. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5783146551312384). Other Changes in the Library - Introduction Below, you can find a list of the topics that we'll cover in the section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5141944611110912). Refactoring with std::optional and std::variant - The Use Case The lesson provides the implementation of a particular use case of std::variant and std::optional View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5631147627249664). Refactoring with std::optional and std::variant - Introduction Intro provides a short overview of what refactoring with std::variant and std::optional means. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5713550869790720). Other Changes in the Library - Return Type of Emplace Methods This is the last topic of discussion for map enhancements. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5651140700012544). Enforcing Code Contracts With [[nodiscard]] - Summary Let's summarize this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5732328466808832). How to Parallelise CSV Reader - Converting Lines into Records This lesson explains the functionality of the LoadRecords function. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5727727415984128). How to Parallelise CSV Reader - The OrderRecord Class Now, we'll examine the class which converts CSV lines to records. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5698727796801536). Removed And Deprecated Library Features - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4861403287519232). Other Changes in the Library - constexpr Additions to the Standard Library C++17 brings a diverse range of new methods to the constexpr class. We'll talk about them below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5101969001676800). Refactoring with std::optional and std::variant - A Separate Structure The lesson elaborates the use of a separate struct to return multiple values. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6307244199116800). Refactoring with std::optional and std::variant - The Tuple Version The lesson elaborates how to return multiple values using tuple. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5707292028698624). Refactoring with std::optional and std::variant - With std::optional The lesson shows why std::optional is the right choice for nullable types. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5666953695854592). Language Clarification - Expression Evaluation Order Let's take a look at how C++ 14 and C++ 17 address Expression Evaluation View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5091118303674368). Language Clarification - Evaluation Order in C++17 Now let's try and understand evaluation order in C++ 17! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5708227794698240). Language Clarification - Named Return Value Optimization Here we learn about how compilers use NRVO and Eliding to optimize. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5133423731539968). Language Clarification - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4685206546022400). Enforcing Code Contracts With [[nodiscard]] - How to Ignore [[nodiscard]] In some circumstances, you may not want the [[nodiscard]] functionality. There are methods of ignoring its warnings. We'll discuss them below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5659434281861120). How to Parallelise CSV Reader - Introduction Let's take a look at what we'll learn about parallel algorithms in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5643013481037824). How to Parallelise CSV Reader - The Core Parts Let's examine the core parts of our CSV Reader application. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5662100315701248). Replacing enable_if with if constexpr - Factory with Variable Arguments - Summary Here's a brief summary of all the concepts discussed in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5669484505333760). Standard Attributes - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5679939292495872). How to Parallelise CSV Reader - The Serial Version Let's take a look at the serial implementation of the CSV application from the previous lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5747175027900416). std::optional - A Basic Example Of std::optional Let's look at std::optional in action. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5723580155297792). How to Parallelise CSV Reader - Data Size and Instruction Count Matters Let's learn about factors which improve the performance of parallel algorithms. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5704809470492672). std::optional - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6629593337298944). How to Parallelise CSV Reader - Parallel Calculations Now, it's time to refactor the CalcTotalOrder function using parallel algorithms. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5665514814701568). How to Parallelise CSV Reader - Wrap Up & Discussion Some final words on this topic. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5650602688249856). std::variant - Changing the values This lesson addresses the ways of changing values of the variant. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5711786175102976). std::variant - Parsing command line Here we discuss how to parse command line to test for the existence of parameters. Read below to find out more! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5757708502302720). std::any - Performance & Memory Considerations This module provides a comparison of std::any with std::variant and std::optional evaluating based on efficiency and memory allocations. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5125076462600192). std::any - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4806112157106176). std::string_view - The Basics Let's begin our study on std::string_view with a simple use case. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5744599725244416). std::string_view - Other Operations A string_view borrows a limited number of methods from the string type. Check them out below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6266384027746304). std::string_view - Problem With The Initial Example We've learned about several risks associated with std::string_view. Let's check if they apply to the first example in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5719699115474944). std::string_view - Choosing between string & string_view We should be clear on why we choose a string_view instead of a string. Let's figure it out with the help of an example. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5753028061691904). std::string_view - Initializing string Members from string_view We'll continue our analysis of the example from the last chapter, this time using std::string_view instead of std::string. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5679068724854784). std::string_view - Printing With printf() This is a third party API which may cause problems with std::string_view. We'll learn how to use them together correctly. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5662816568606720). std::string_view - Migration from boost::string_ref and boost::string_view In this lesson, we'll learn about the classes from which std::string_view was developed. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5707922315149312). std::string_view - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6131153460264960). String Conversions - to_chars In this part we learn about the to_char function and it's two types of declarations; the integral and floating point. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5740735865290752). Enforcing Code Contracts With [[nodiscard]] - Where Can It Be Used? This lesson showcases some situations where the use of [[nodiscard]] is beneficial. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5674346408312832). Searchers and String Matching - DNA Matching The lesson explains the use and working of searcher functions using the DNA structure. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5705257287942144). Searchers and String Matching - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6252874309828608). Refactoring with std::optional and std::variant - Wrap Up Have questions about Wrap Up? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5647403004723200). String Conversions - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5180329842180096). Filesystem - File Permissions In the last lesson you must have noticed functions related to file permissions. This lesson will talk about them. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6335240035368960). General Language Features - Init Statement for if and switch C++17 adds new features to 'if' and 'switch' statements. See more details in this lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5662190040252416). Introduction - Working With Maps Let's examine the new behavior of maps in C++17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5722458095091712). How to Parallelise CSV Reader - Application Requirements In this lesson, we will look at the requirements of an application which makes computations on the data from a CSV file. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5709671373471744). Refactoring with std::optional and std::variant - With std::variant The lesson describes how std::variant is better than std::optional in terms of error handling. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5740208658055168). Enforcing Code Contracts With [[nodiscard]] - Introduction The [[nodiscard]] attribute is a way of conveying our intentions to the compiler. We'll find out more in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5080691733692416). Replacing enable_if with if constexpr - Factory with Variable Arguments - Introduction One of the most powerful language features that we get with C++17 is the compile-time if in the form of `if constexpr`. It allows you to check, at compile time, a condition and depending on the result the code is rejected from the further steps of the compilation. In this chapter, you’ll see one example of how this new feature can simplify the code. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5768955947909120). Introduction - Language Features We'll start things off with a brief introduction of what to expect in this course. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5742627261513728). Enforcing Code Contracts With [[nodiscard]] - Everywhere?! Let's make a general outline about the appropriate use of [[nodiscard]]. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5752549172838400). Replacing enable_if with if constexpr - Factory with Variable Arguments - With if constexpr This section discusses the use of enable_if in pre C++17 versions and the use of if_constexpr in C++ 17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5702813451550720). How to Parallelise CSV Reader - Calculations Let's write the summing function for our CSV reader app and compile the code. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5763839501008896). How to Parallelise CSV Reader - Using Parallel Algorithms This lesson highlights the advantages of using parallel algorithms to implement the CSV reader application we just made. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5632379142012928). How to Parallelise CSV Reader - Parallel Data Conversion In this lesson, we will begin refactoring the data conversion part of our program. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5099150362279936). How to Parallelise CSV Reader - Tests In this lesson, we'll be running tests to see if the parallel version of our app is better than the serial version. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5743717579227136). Searchers and String Matching - Summary Stop here for a quick summary. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5723364870062080). std::string_view - Handling Non-Null Terminated Strings A string_view works well with null-terminated strings. Let's see what happens when we point it to a substring which does not have a null character at the end. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5745726617288704). Filesystem - Supporting Functions Let's look at some additional functions the Filesytem library has to offer. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5754394867924992). std::string_view - When to Use This lesson lists the various areas where std::string_view is recommended. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5730099915653120). std::string_view - Risks Using string_view Let's look at some cases where string_view may cause problems. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5654587411267584). std::string_view - Reference Lifetime Extension This lesson deals with the lifetime of temporary objects. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5687400961409024). std::string_view - Strings in Constant Expressions Now, we'll learn why string_view works with constant expressions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5762004543340544). std::string_view - The std::basic_string_view Type std::string_view is built upon the std::basic_string_view type. We'll see the implementation below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6232662628892672). Introduction - Let's Start! We are at the end of our introductory section. Let's see what lies ahead. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5750959498067968). Language Clarification - Guaranteed Copy Elision This part introduces the concept of Copy Elision and its role in optimization. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5128945154392064). Language Clarification - Simplification of gl/prvalue This section further touches upon the concept of glvalue/prvalue in C++ 17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5677471533891584). Language Clarification - Introduction Have questions about Introduction? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5630231188602880). General Language Features - Modifiers & Limitations To further specify the nature of our structured bindings, we can use modifier types. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5653058939781120). General Language Features - Inline Variables Let's take a look at how C++ deals with inline variable declaration. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5698662902530048). Removed or Fixed Language Features - Fixes Let's get started with the major fixes and improvements in C++17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5173925273141248). General Language Features - Structured Binding Declarations This lesson sheds light on the modifications made to tuple functionality. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5634745199230976). General Language Features - Binding In this lesson, we will list down the different initializers which support structured binding. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5688887556964352). Introduction - Debug Printing Now, we shall study a print function which uses several new facilities of C++. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5675230634704896). Removed And Deprecated Library Features - Removing auto_ptr The lesson introduces how the pointers have been revamped for the better. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5654068257095680). Removed or Fixed Language Features - Introduction Have a look at what we'll be covering in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5704894564532224). Removed or Fixed Language Features - Removing Deprecated Operator ++ (bool) For the history of the operator ++, read below. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5686830267629568). Removed or Fixed Language Features - Removing Trigraphs This lesson shows how trigraphs have evolved in C++17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5165928044036096). Language Clarification - Non-movable/Non-copyable type To understand further let's take a look at an example of non-movable/non-copyable type. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6259323638382592). std::optional - The Standard Library Changes This section delves deep into the std::optional utility introduced in C++17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5650531351527424). General Language Features - Introduction Let's see which concept will we deal with in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5683952303996928). Language Clarification - Dynamic Memory Allocation for Over-Aligned Data This lesson explains memory alignment in C++ 17 and how it fixes the holes in C++11/14 memory alignment. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5699959982653440). Language Clarification - Exception Specifications in the Type System This lesson touches upon specifying exception and the reasons for adding this feature. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5643051665981440). Templates - Deduction Guides The lesson focuses on how compiler uses special rules called “Deduction Guides” to work out the template class types. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5738958285701120). Templates - Fold Expressions This lesson explains how variadic templates in C++ 17 are better than available in C++ 11. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5719510673784832). Language Clarification - Quiz This short quiz tests your understanding of the various concepts learned in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5633182368006144). Templates - Template Code Simplification The lesson highlights the updates used for Templates Simplification for picking one implementation of Algorithm. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5747264752451584). Templates - Examples - Fold Expression This lesson focuses the implementation of the Fold Expression Templates. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5755545449398272). Templates - Quiz Have questions about Quiz? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5741250187624448). std::optional - Examples Of std::optional Shown here are some practical examples where std::optional is useful. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5106762722050048). Language Clarification - Updated Value Categories C++ 17 introduces some updated value categories. This part helps familiarize with them. Read below to find out more! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5724840728199168). General Language Features - Quiz Have questions about Quiz? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5665491259490304). std::optional - Be Careful With Braces When Returning Let's observe some seemingly ordinary code and understand why it can potentially be harmful. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5768436793737216). std::any - Accessing The Stored Value Here are discussed the different modes of accessing a stored value in std::any. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6314928432480256). std::variant - Examples of std::variant This lesson explains the basic idea of ErrorCode. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5638823807549440). Standard Attributes - Introduction Let's take a look at what you should be expecting from this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5632314247741440). Standard Attributes - Third standard attribute This section delves into the details of the third standard attribute called nodiscard. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5760104557182976). std::string_view - Introduction Let's take a look at what we'll cover in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5713123721871360). std::optional - Quiz Have questions about Quiz? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5768278618144768). Standard Attributes - Quiz Now that you've learned about Standard Attributes, let's test your concepts in this quiz. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5742291717193728). std::variant - Introduction Let's take a look at what you'll learn in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5189028525637632). std::string_view - std::string_view Creation The different ways of initializing a string_view are listed in this lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5736569747013632). std::any - Summary Let's summarise the chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5697402329628672). std::optional - Introduction Find out what this section is all about below! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5759681167360000). Filesystem - Summary Here's a brief summary of what we have covered so far. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5711754432610304). String Conversions - Quiz This short quiz will test your understanding of String Conversions! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5179341763772416). std::optional - Summary Let's summarise the chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5097150585241600). std::optional - Operations on std::optional Creating and accessing is just the tip of the iceberg. There are several operations that can be performed on std::optional. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5735545934184448). std::optional - Special case: optional<bool> and optional<T*> This lesson highlights a case where using std::optional is not recommended. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5754323531202560). std::variant - std::variant demo Let's take a look at the basic example of std::variant and it's explanation! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5692914088804352). std::optional - Accessing The Stored Value This lesson goes into detail on the different ways to access optional type values. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5669712675471360). Standard Attributes - Summary Let's summarise the chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5640601387139072). std::variant - In Place Construction std::variant has two in_place helpers which this lesson elaborates on. Let's read more about them below! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5688026416021504). std::variant - Object lifetime This lesson discusses how std::variant handles object lifetime. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5769473491468288). std::variant - Polymorphism In this lesson we deal with the concept of using std::vector and std::variant in Polymorphism. Interesting? Read on to find out more! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5716665794822144). std::variant - Exception safety guarantees This part discusses exception safety with an example! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5657601404567552). std::variant - When to Use std::variant This section explains some possible uses of std::variant View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5637182593171456). std::variant - std::variant Creation This lesson elaborates on creating and initializing std::variant View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5702216987967488). std::variant - Accessing Stored Value This part discusses how to access stored values using helper functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5677770570989568). std::variant - Parsing and State Machines This section daily deals with state machines and the use of visitors as events. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5765847465328640). std::variant - Overload In this part we'll take a look at overloading and C++ 17 overload uses. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5749582424178688). std::any - Introduction The intro to std::any elaborates why and how it is used(explained in later modules)! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5092159833243648). std::any - The Basics The basics talk about the former kind of exceptions thrown, and when to use std::any. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5664266656940032). Standard Attributes - Why do we need attributes? In this part we learn about attributes! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5743845958483968). Removed or Fixed Language Features - Removing the 'register' Keyword 'register' allowed us to store a variable in a registers. Let's see why it has been deprecated. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5720726149529600). Standard Attributes - C++17 additions Fallthrough, maybe_unused and nodiscard are the three new attributes in C++ 17 that this lesson talks about. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5080101712560128). Standard Attributes - Attributes in C++11/C++14 Let's take a look at specific attributes in C++ 11 and attribute additions in C++ 14. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5683860297744384). General Language Features - How Can It Simplify The Code If you still aren't on board with the concept of inline variables, the example below will prove their importance. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5200927732531200). Standard Attributes - Before C++11 This section explains how attributes used to work before C++ 11. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5087581398106112). std::optional - Default Construction Using std::optional with class constructors can be slightly inefficient sometimes. In this lesson, we'll learn a way to fix that. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5673775714533376). Removed And Deprecated Library Features - Removing Old functional Stuff In this lessons we will look at some removeed functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5928200515354624). Removed And Deprecated Library Features - Other Smaller Removed or Deprecated Items This lesson will describe the deprecated features. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5811034042400768). Templates - Template Argument Deduction for Class Templates This lesson will make you learn how to skip make_Type functions to construct a template object. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5766360177049600). Standard Attributes - Namespaces/enumerators attributes This lessons discusses attributes when they were applied on namespaces/enumerators, the problems with it in C++ 11 and the fix C++ 17 offers. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5184314799030272). Standard Attributes - More on attributes This lesson touches upon some more features of the attributes in C++ 17 View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6326827639373824). std::variant - The basics Let's get started with the basics. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5660100538662912). Other Changes in the Library - std::byte C++ now allows us to convert data types into bytes using std::byte. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5764441937281024). Parallel STL Algorithms - Introduction Let's take a look at the concepts to look forward to in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5643641687113728). Parallel STL Algorithms - Par/Seq Policy Usage Let's compare different situations to see where parallel execution works better. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5659728688447488). Parallel STL Algorithms - Execution Policies This lessons discusses the three types of execution policies as well as the differences between them. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5632002325741568). Parallel STL Algorithms - Algorithm Update This section lists all the algorithms that can handle execution policy parameter. It further looks at the usage of the Run and Measure function. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5692608609255424). Parallel STL Algorithms - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/4910451814039552). Other Changes in the Library - Improvements for Maps and Sets In the next few lessons, we will test the functionality of the new features introduced for maps and sets. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5664918955098112). Other Changes in the Library - Emplace Enhancements for Maps and Unordered Maps Here we'll work with some of the new methods available in maps. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5742812481978368). Other Changes in the Library - Sampling Algorithms Check out the cool new sampling feature added to C++. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5179862528557056). Other Changes in the Library - New Mathematical Functions With C++17 we get lots of new mathematical functions like gcm, lcm, clamp and other special ones. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5684469646229504). Other Changes in the Library - Non-member size(), data() and empty() Here, we'll discuss the functionality of these new non-member functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5069052372320256). Other Changes in the Library - Shared Pointers and Arrays C++ 17 has come up with a new method of handling arrays. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5408022882942976). Other Changes in the Library - std::scoped_lock Let's look at the how C++17 allows locking a variadic number of mutexes simultaneously. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5472863517671424). Other Changes in the Library - Polymorphic Allocator C++ 17 has introduced Polymorphic allocator as an enhancement to the standard allocator from the Standard Library. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6418284335333376). Other Changes in the Library - Compiler Support We will conclude this section with the provision of compiler support for the changes to the Standard Library, introduced by C++ 17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5210052120018944). String Conversions - Examples Below we take a look at the floating and integral type string conversions! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5629925709053952). std::optional - Constructors With Many Arguments The basic principle is the same as it was with default constructors. The 'in_place' command will come in handy once again. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5751978479058944). Parallel STL Algorithms - C++17's Parallelism This chapter talks about CPU and GPU computing. It also gives a basic overview of the execution policy parameter introduced in C++ 17 View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5189275150712832). std::any - Migration from boost::any The lesson shows how transition from boost to std can make things more flexible for you. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5082384487677952). std::string_view - Conversion Functions Like atoi()/atof() This lesson explains why conversion using atof() is not possible with string_view. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5729474461040640). Searchers and String Matching - Using Searchers The lesson will elaborate the syntax and methods for using Searchers. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5734175839617024). Templates - Introduction This introduction will give us a brief glimpse of what to expect in this section. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5723208305082368). Templates - if constexpr The lesson explains why 'if constexpr' should be used, and how it is different from simple if statements. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5682049969029120). Templates - Examples - Template Code Simplifications Let’s see a couple of examples! View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5727662521712640). Templates - Compiler Support Let's look at the compiler support for the updates from C++17 with respect to templates. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5244065794752512). Templates - Declaring Non-Type Template Parameters With auto This lesson teaches you how C++ 17 uses auto for deducing non-type template parameters. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5655109786664960). Templates - Other Modifications in C++ 17 This lesson highlights some of the prominent features of C++ 17 that are worth adding to your set of tools. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5721767679098880). General Language Features - Providing Structured Binding Interface for Custom Class To work with custom classes, we need three things: 1. std::tuple_size 2. get<N> 3. std::tuple_element View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5709709558415360). General Language Features - The Syntax Below is the syntax we can use to access and bind tuple values with variables safely. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5672609630912512). General Language Features - Using if In A Search Statement Let's test the 'if' statement feature we discussed in the last lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5192595495976960). General Language Features - constexpr Lambda Functions Lambda functions are now compatible with constant expressions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5704744576221184). General Language Features - Capturing [*this] in Lambda Expressions Let's look at how to capture [*this] in Lambda Expressions. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5559230713036800). General Language Features - Nested Namespaces C++17 has restructured the way we write nested namespaces, making the syntax more readable. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5665643193958400). General Language Features - Compiler Support Let's look at the compiler support for the topics in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6261239563943936). General Language Features - __has_include Preprocessor Expression Let's look at how we can use the `__has_include` preprocessor expression to check if a given header exists. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/6657856906461184). std::optional - Returning std::optional Let's learn the different ways to return an optional. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5731809312636928). std::optional - Performance & Memory Consideration Let's weigh the memory and performance constraints when working with std::optional. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5205486840315904). Removed or Fixed Language Features - Removing Deprecated Exception Specifications This lesson shows how exception handling has evolved in C++17. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5753282001633280). Removed or Fixed Language Features - static_assert With No Message C++17 has built upon the previous functionality of 'static_assert' to provide a more convenient experience. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5141111722999808). std::optional - std::optional Creation This lesson explains the different ways of creating std::optional variables. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5102693240537088). std::optional - in_place Construction Here, we will discuss why it is a good practice to use in_place with std::optional. View the lesson [here](https://www.educative.io/collection/page/10370001/5666073764429824/5713856349339648).
About the C++17 in Detail: A Deep Dive (Bartłomiej Filipek) category [C++17 in Detail: A Deep Dive (Bartłomiej Filipek)] (1)
Examples not compiling [Introduction - Working With Maps] (3)