Programming in C++ 2011 / C++ 2014 / C++ 2017
New Features – 4 Days
Course Description
The Programming in C++2011 / C++2014 / C++2017 New Features course will present additional capabilities of the ISO Standard. This course will present additional capabilities of the ISO Standard C++2011 (C++11 ), C++2014 (C++14) and C++2017 (C++17) programming languages. All features shown are applicable to all C++11 / C++14 / C++17 (platform) variants.
Course Objectives
The course objective is to provide information on the C++11, C++14, and C++17 language features in each of the coverage areas.
Prerequisites
It is assumed that the participant has programming experience with C++ at either the 1998 or 2003 standards level.
Outline
Namespaces
namespace issues
collisions / pollutions
nested namespace definition (C++17)
namespace aliases
inlined namespaces
attributes on namespaces (C++17)
attributes on namespaces without repetition (C++17)
(Data) Type Initialization
uniform (universal brace) initialization
auto type deduction
new rules for direct initialization (C++17)
alternate type deduction on declaration (C++14)
aggregate member initialization (extended in C++14)
user defined literals (suffixes)
Defining and using classes
constructors
default keyword
delete keyword
delegating (overloaded) constructors
template classes
template aliases
forward references to template aliases
variadic templates
fold expressions (C++17)
empty parameter packs (C++17)
using declarations in parameter pack (C++17)
typename in a template template-parameter (C++17)
allow constant evaluation for non-type
template arguments (C++17)
template argument deduction (C++17)
auto deduction of non-type parameters (C++17)
Pointers and references
smart pointers
unique_ptr
shared_ptr (and additions (C++17))
weak_ptr
references
move semantics
move reference (operations)
move constructor
move assignment (operator function)
guaranteed copy elision (C++17)
Exception Handling
using noexcept
using std::set_terminate( )
exception classes
deprecated dynamic exception specifications
removing dynamic exception specifications (C++17)
std::uncaught_exceptions( ) (C++17)
Data Operations
const_cast
static_cast
move semantics
passing objects to functions
by move reference
Inheritance
using override
using final
aggregate initialization (C++17)
inheriting constructors (C++17)
Functions
constexpr declared (C++14)
return type deduction (C++14)
lambdas (anonymous functions)
outer / inner values
captures
captures by value-move (C++14)
capture of *this (C++17)
auto parameters (C++14)
trailing return type
constexpr usage (C++17)
The Standard Template Library
range-based for loop
begin( ) and end( ) methods
different begin( ) and end( ) types (C++17)
standard defined literals (C++14)
associative container heterogeneous lookup (C++14)
tuple container (with extensions in C++14)
decomposition declarations (C++17)
regular expressions
thread operations (and mutex synchronization)
shared timed mutex (C++14)
shared lock (C++14)
std::shared_mutex (C++17)
random number operations
clock and timing capabilities
memory control features (C++17)
string_view (C++17)
std::auto_ptr removed (C++17)
std::filesystem (C++17)
Miscellaneous Features
type aliases
decltype
constexpr declared variable
type traits
static assert
optional text message (C++17)
enumerated (scoped) class
attributes (C++17)
direct list initialization (C++17)
binary literals (C++14)
hexadecimal floating-point literals (C++17)
[[deprecated]] attribute (C++14)
removal of trigraphs (C++17)
register keyword deprecated
register keyword removed (C++17)
memory alignment
alignment memory allocation functions (C++17)
__has_include preprocessor conditional (C++17)
[[fallthrough]] attribute (C++17)
[[nodiscard]] attribute (C++17)
[[maybe_unused]] attribute (C++17)
initialization for if and switch (C++17)
constexpr if statements (C++17)
inlined variables (C++17)