C++, C++11, C++14 and C++17

C++ is by far the most used programming language in the world. It is efficient, strong, robust and give great performance. You can find C++ in any industry for Android Applications development to Image processing. You can have it in real-time or games. C++ is the base of all computer languages. If you know C++ you mostly knows C and you can easily adapt to Java or C#.

In this course we are going to learn from basic C++ programming and we will reach all the extended new features of C++ that we're added in C++11, or C++14 (C++ 2014) - we will look on what's coming on C++17 and C++20

Some of the topics for our advanced course in C++:
C++ language
C++ C++ language
This is a brief reference of available C++ language constructs.
Basic concepts
Comments
ASCII chart
Names and identifiers
Types - Fundamental types
Object - Scope - Lifetime
Definitions and ODR
Name lookup
qualified - unqualified
Memory model and data races
Phases of translation
The main() function
C++ Keywords
Preprocessor
#if - #ifdef - #ifndef
#define - # - ## - #include
#error - #pragma - #line
Expressions
Value categories
Evaluation order and sequencing
Constant expressions
Operators
assignment - arithmetic
increment and decrement
logical - comparison
member access and indirection
call, comma, ternary
sizeof - alignof(C++11)
new - delete - typeid
Operator overloading
Operator precedence
Conversions
implicit - explicit - user-defined
static_cast - dynamic_cast
const_cast - reinterpret_cast
Literals
boolean - integer - floating
character - string
nullptr (C++11)
user-defined (C++11)
Declaration
Namespace declaration
Namespace alias
Lvalue and rvalue references
Pointers - Arrays
Structured bindings(C++17)
Enumerations and enumerators
Storage duration and linkage
Language linkage
Inline assembly
const/volatile - constexpr(C++11)
decltype(C++11) - auto(C++11)
alignas(C++11)
typedef - Type alias(C++11)
Elaborated type specifiers
Attributes(C++11)
static_assert(C++11)
Initialization
Default initialization
Value initialization(C++03)
Copy initialization
Direct initialization
Aggregate initialization
List initialization(C++11)
Reference initialization
Static non-local initialization
zero - constant
Dynamic non-local initialization
ordered - unordered
Functions
Function declaration
Default arguments
Variadic arguments
Lambda expression(C++11)
inline specifier
Argument-dependent lookup
Overload resolution
Operator overloading
Address of an overload set
Statements
if - switch
for - range-for(C++11)
while - do-while
continue - break - goto - return
synchronized and atomic(TM TS)
Classes
Class types - Union types
Data members - Member functions
Static members - Nested classes
Derived class - using-declaration
Virtual function - Abstract class
Member access - friend
override(C++11) - final(C++11)
Bit fields - The this pointer
Constructors and member initializer lists
Default constructor - Destructor
Copy constructor - Copy assignment
Move constructor(C++11) - Move assignment(C++11)
Converting constructor - explicit specifier
Templates
Template parameters and arguments
Class template - Function template
Class member template
Variable template(C++14)
Template argument deduction
Explicit specialization
Class template argument deduction(C++17)
Partial specialization
Parameter packs(C++11) - sizeof...(C++11)
Fold-expressions(C++17)
Dependent names - SFINAE
Constraints and concepts (C++20)
Exceptions
throw-expression
try-catch block
function-try-block
noexcept specifier(C++11)
noexcept operator(C++11)
Dynamic exception specification(until C++17)
Miscellaneous
History of C++
Extending the namespace std
Undefined behavior
RAII - Rule of three/five/zero
As-if rule - Copy elision
Empty base optimization
pImpl