professional_c_plus_plus_introduction

Professional C++ Introduction

Return to Professional C Plus Plus | Professional C++, C plus plus DevOps | C++ DevOps, C plus plus books | C++ books, C plus plus courses | C++ courses, C plus plus topics | C++ topics, C plus plus | C++

INTRODUCTION

PART I: Introduction to Professional C++

“The development of C plus plus | C++ started in 1982 by Bjarne Stroustrup, a Danish computer scientist, as the successor of C with Classes. In 1985, the first edition of The C Plus Plus Programming Language book | The C++ Programming Language book was released. The first C plus plus standardized | standardized version of C++ was released in 1998, called C plus plus 98 | C++98. In 2003, C plus plus 03 | C++03 came out and contained a few small updates. After that, it was silent for a while, but traction slowly started building up, resulting in a major update of the language in 2011, called C plus plus 11 | C++11. From then on, the C plus plus Standard Committee | C++ Standard Committee has been on a three-year cycle to release updated versions, giving us C plus plus 14 | C++14, C plus plus 17 | C++17, and now C plus plus 20 | C++20. All in all, with the release of C plus plus 20 | C++20 in 2020, C++ is almost 40 years old and still going strong. In most rankings of programming languages in 2020, C++ is in the top four. It is being used on an extremely wide range of hardware, going from small devices with embedded microprocessors all the way up to multirack supercomputers. Besides wide C plus plus hardware support | hardware support, C++ can be used to tackle almost any programming job, be it C plus plus games | games on C plus plus mobile | mobile platforms, C plus plus performance | performance-critical C plus plus artificial intelligence | artificial intelligence (C plus plus AI | AI) and C plus plus machine learning | machine learning (C plus plus ML | ML) software, C plus plus real-time | real-time 3-D C plus plus graphics | graphics engines, low-level C plus plus hardware drivers | hardware drivers, entire C plus plus operating systems | operating systems, and so on. The performance of C plus plus | performance of C++ programs is hard to match with any other programming language, and as such, it is the de facto language for writing C plus plus fast | fast, C plus plus powerful | powerful, and enterprise-class C plus plus object-oriented | object-oriented programs. As C plus plus popular | popular as C plus plus | C++ has become, the language is surprisingly difficult to grasp in full. There are simple, but powerful, C plus plus techniques | techniques that professional C plus plus programmers | C++ programmers use that don't show up in traditional C plus plus texts | C++ texts, and there are useful parts of C++ that remain a mystery even to experienced C++ programmers.”

“Too often, C plus plus programming books | programming books focus on the C plus plus syntax | syntax of the language instead of its C plus plus real-world use | real-world use. The typical C plus plus text | C++ text introduces a major part of the language in each chapter, explaining the C plus plus syntax | syntax and providing an C plus plus examples | example. Professional C++ does not follow this C plus plus pattern | pattern. Instead of giving you just the C plus plus nuts and bolts | nuts and bolts of the language with little practical context, this book will teach you how to use C plus plus in the real world | C++ in the real world. It will show you the little-known C plus plus features | features that will make your life easier, as well as the C plus plus programming techniques | programming techniques that separate C plus plus novices | novices from C plus plus professional programmers | professional programmers.”

Who This Book is For

“Even if you have used the language for years, you might still be unfamiliar with the more C plus plus advanced features | advanced features of C++, or you might not be using the full capabilities of the language. Perhaps you write competent C plus plus code | C++ code, but would like to C plus plus learn | learn more about C plus plus design | design and good programming C plus plus style | style in C++. Or maybe you're relatively new to C plus plus | new to C++ but want to learn C plus plus | learn the C Plus Plus Core Guidelines (CG) by Bjarne Stroustrup and Herb Sutter | “right” way to program C++ from the start. This book will meet those needs and bring your C plus plus skills | C++ skills to the professional level.”

“Because this book focuses on advancing from C plus plus basic | basic or C plus plus intermediate | intermediate knowledge of C++ to becoming a C plus plus professional | professional C plus plus programmer | C++ programmer, it assumes that you have some knowledge about programming. Chapter 1, “A C plus plus Crash Course | Crash Course in C++ and the C plus plus Standard Library | Standard Library,” covers the basics of C plus plus | basics of C++ as a C plus plus refresher | refresher, but it is not a substitute for actual C plus plus training | training in programming. If you are just starting with C++ but you have significant experience in another programming language such as C, Java, or C Sharp | C, you should be able to pick up most of what you need from Chapter 1.”

“In any case, you should have a solid C plus plus foundation | foundation in programming fundamentals. You should know about C plus plus loops | loops, C plus plus functions | functions, and C plus plus variables | variables. You should know how to C plus plus program structure | structure a program, and you should be familiar with fundamental techniques such as C plus plus recursion | recursion. You should have some knowledge of common C plus plus data structures | data structures such as C plus plus queues | queues, and useful C plus plus algorithms | algorithms such as C plus plus sorting algorithms | sorting and C plus plus searching algorithms | searching. You don't need to know about C plus plus object-oriented programming | object-oriented programming just yet—that is covered in Chapter 5, “C plus plus Designing with Objects | Designing with Objects.””

“You will also need to be familiar with the C plus plus compiler | compiler you will be using to C plus plus compile | compile your code. Two compilers, Microsoft Visual C Plus Plus compiler | Microsoft Visual C++ compiler and GCC compiler | GCC, are introduced later in this C plus plus introduction | introduction. For other compilers, refer to the C plus plus documentation | documentation that came with your compiler.”

What This Book Covers

“Professional C++ uses an approach to C plus plus programming | C++ programming that will both increase the C plus plus quality | quality of your code and improve your programming C plus plus efficiency | efficiency. You will find discussions on new C plus plus 20 features | C++20 features throughout this fifth edition. These features are not just isolated to a few chapters or sections; instead, C plus plus examples | examples have been updated to use new features when appropriate.”

“Professional C++ teaches you more than just the C plus plus syntax | syntax and C plus plus language features | language features of C++. It also emphasizes C plus plus programming methodologies | programming methodologies, C plus plus reusable design patterns | reusable design patterns, and good C plus plus programming style | programming style. The Professional C++ C plus plus methodology | methodology incorporates the entire C plus plus software development | software development process, from C plus plus designing | designing and C plus plus writing code | writing code to C plus plus debugging | debugging and working in groups. This approach will enable you to C plus plus master | master the C++ language and its C plus plus idiosyncrasies | idiosyncrasies, as well as take advantage of its C plus plus powerful capabilities | powerful capabilities for C plus plus large-scale | large-scale C plus plus software development | software development.”

“Imagine users who have learned all of the syntax of C++ without seeing a single example of its use. They know just enough to be dangerous! Without examples, they might assume that all code should go in the main() function of the program or that all variables should be global—practices that are generally not considered hallmarks of good programming.”

“Professional C++ programmers understand the correct way to use the language, in addition to the syntax. They recognize the importance of good design, the theories of object-oriented programming, and the best ways to use existing libraries. They have also developed an arsenal of useful code and reusable ideas.”

“By reading and understanding this book, you will become a professional C++ programmer. You will expand your knowledge of C++ to cover lesser known and often misunderstood language features. You will gain an appreciation for object-oriented design and acquire top-notch debugging skills. Perhaps most important, you will finish this book armed with a wealth of reusable ideas that you can actually apply to your daily work.”

“There are many good reasons to make the effort to be a professional C++ programmer as opposed to a programmer who knows C++. Understanding the true workings of the language will improve the quality of your code. Learning about different programming methodologies and processes will help you to work better with your team. Discovering reusable libraries and common design patterns will improve your daily efficiency and help you stop reinventing the wheel. All of these lessons will make you a better programmer and a more valuable employee. While this book can't guarantee you a promotion, it certainly won't hurt.”

HOW THIS BOOK IS STRUCTURED

This book is made up of five parts.

“Part I, “Introduction to Professional C++,” begins with a crash course in C++ basics to ensure a foundation of C++ knowledge. Following the crash course, Part I goes deeper into working with strings, because strings are used extensively in most examples throughout the book. The last chapter of Part I explores how to write readable C++ code.”

“Part II, “Professional C++ Software Design,” discusses C++ design methodologies. You will read about the importance of design, the object-oriented methodology, and the importance of code reuse.”

“Part III, “C++ Coding the Professional Way,” provides a technical tour of C++ from the professional point of view. You will read about the best ways to manage memory in C++, how to create reusable classes, and how to leverage important language features such as inheritance. You will also learn techniques for input and output, error handling, string localization, how to work with regular expressions, and how to structure your code in reusable components called modules. You will read about how to implement operator overloading, how to write templates, how to put restrictions on template parameters using concepts, and how to unlock the power of lambda expressions and function objects. This part also explains the C++ Standard Library, including containers, iterators, ranges, and algorithms. You will also read about some additional libraries that are available in the standard, such as the libraries to work with time, dates, time zones, random numbers, and the filesystem.”

“Part IV, “Mastering Advanced Features of C++,” demonstrates how you can get the most out of C++. This part of the book exposes the mysteries of C++ and describes how to use some of its more advanced features. You will read about how to customize and extend the C++ Standard Library to your needs, advanced details on template programming, including template metaprogramming, and how to use multithreading to take advantage of multiprocessor and multicore systems.”

“Part V, “C++ Software Engineering,” focuses on writing enterprise-quality software. You'll read about the engineering practices being used by programming organizations today; how to write efficient C++ code; software testing concepts, such as unit testing and regression testing; techniques used to debug C++ programs; how to incorporate design techniques, frameworks, and conceptual object-oriented design patterns into your own code; and solutions for cross-language and cross-platform code.”

“The book concludes with a useful chapter-by-chapter guide to succeeding in a C++ technical interview, an annotated bibliography, a summary of the C++ header files available in the standard, and a brief introduction to the Unified Modeling Language (UML).”

“This book is not a reference of every single class, method, and function available in C++. The book C++17 Standard Library Quick Reference by Peter Van Weert and Marc Gregoire (Apress, 2019. ISBN: 978-1-4842-4923-9) is a condensed reference to all essential data structures, algorithms, and functions provided by the C++ Standard Library up until the C++17 standard. Appendix B lists a couple more references. Two excellent online references are:”

  • cppreference.com: You can use this reference online or download an offline version for use when you are not connected to the Internet.

When I refer to a “Standard Library Reference” in this book, I am referring to one of these detailed C++ references.

The following are additional excellent online resources:

  • https://github.com/isocpp/CppCoreGuidelines: The CPP CG | C++ Core Guidelines are a collaborative effort led by Bjarne Stroustrup, inventor of the C++ language itself. They are the result of many person-years of discussion and design across a number of organizations. The aim of the guidelines is to help people to use modern C++ effectively. The guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management, and concurrency.
  • https://github.com/Microsoft/GSL: This is an implementation by Microsoft of the Guidelines Support Library (GSL) containing functions and types that are suggested for use by the C++ Core Guidelines. It's a header-only library.
  • isocpp.org/faq: This is a large collection of frequently asked C++ questions.
  • stackoverflow.com: Search for answers to common programming questions, or ask your own questions.

WHAT YOU NEED TO USE THIS BOOK

All you need to use this book is a computer with a C++ compiler. This book focuses only on parts of C++ that have been standardized, and not on vendor-specific compiler extensions.

  • Any C++ Compiler

You can use whichever C++ compiler you like. If you don't have a C++ compiler yet, you can download one for free. There are a lot of choices. For example, for Windows, you can download Microsoft Visual Studio Community Edition, which is free and includes Visual C++. For Linux, you can use GCC or Clang, which are also free.

The following two sections briefly explain how to use Visual C++ and GCC. Refer to the documentation that came with your compiler for more details.

COMPILERS AND C++20 FEATURE SUPPORT

This book discusses new features introduced with the C++20 standard. At the time of this writing, no compilers were fully C++20 compliant yet. Some new features were only supported by some compilers and not others, while other features were not yet supported by any compiler. Compiler vendors are hard at work to catch up with all new features, and I'm sure it won't take long before there will be fully C++20-compliant compilers available. You can keep track of which compiler supports which features at en.cppreference.com/w/cpp/compiler_support.

COMPILERS AND C++20 MODULE SUPPORT

At the time of this writing, there was no compiler available yet that fully supported C++20 modules. There was experimental support in some of the compilers, but it was still incomplete. This book uses modules everywhere. We did our best to make sure all sample code would compile once compilers fully support modules, but since we were not able to compile and test all examples, some errors might have crept in. When you use a compiler with support for modules and you encounter problems with any of the code samples, double-check the list of errata for the book at www.wiley.com/go/proc++5e to see if it's a known issue. If your compiler does not yet support modules, you can convert modularized code to non-modularized code, as explained briefly in Chapter 11, “Odds and Ends.”

Example: Microsoft Visual C++ 2019

First, you need to create a project. Start Visual C++ 2019, and on the welcome screen, click the Create A New Project button. If the welcome screen is not shown, select File ➪ New ➪ Project. In the Create A New Project dialog, search for the Console App project template with tags C++, Windows, and Console, and click Next. Specify a name for the project and a location where to save it, and click Create.

Once your new project is loaded, you can see a list of project files in the Solution Explorer. If this docking window is not visible, select View ➪ Solution Explorer. A newly created project will contain a file called <projectname>.cpp. You can start writing your C++ code in that .cpp file, or if you want to compile source code files from the downloadable source archive for this book, select the <projectname>.cpp file in the Solution Explorer and delete it. You can add new files or existing files to a project by right-clicking the project name in the Solution Explorer and then selecting Add ➪ New Item or Add ➪ Existing Item.

At the time of this writing, Visual C++ 2019 did not yet automatically enable C++20 features. To enable C++20 features, in the Solution Explorer window, right-click your project and click Properties. In the Properties window, go to Configuration Properties ➪ C/C++ ➪ Language, and set the C++ Language Standard option to ISO C++20 Standard or Preview - Features from the Latest C++ Working Draft, whichever is available in your version of Visual C++. These options are accessible only if your project contains at least one .cpp file.

Finally, select Build ➪ Build Solution to compile your code. When it compiles without errors, you can run it with Debug ➪ Start Debugging.

Module Support At the time of this writing, Visual C++ 2019 did not yet have full support for modules. Authoring and consuming your own modules usually works just fine, but importing Standard Library headers such as the following did not yet work out of the box:

import <iostream>; To make such import declarations work, for the time being you need to add a separate header file to your project, for example called HeaderUnits.h, which contains an import declaration for every Standard Library header you want to import. Here's an example:

// HeaderUnits.h

  1. pragma once

import <iostream>; import <vector>; import <optional>; import <utility>; // …

Next, right-click the HeaderUnits.h file in the Solution Explorer and click Properties. In Configuration Properties ➪ General, set Item Type to C/C++ Compiler and click Apply. Next, in Configuration Properties ➪ C/C++ ➪ Advanced, set Compile As to Compile as C++ Header Unit (/exportHeader) and click OK.

When you now recompile your project, all import declarations that have a corresponding import declaration in your HeaderUnits.h file should compile fine.

If you are using module implementation partitions (see Chapter 11), also known as internal partitions, then right-click all files containing such implementation partitions, click Properties, go to Configuration Properties ➪ C/C++ ➪ Advanced, and set the Compile As option to Compile as C++ Module Internal Partition (/internalPartition) and click OK.

Example: GCC Create your source code files with any text editor you prefer and save them to a directory. To compile your code, open a terminal and run the following command, specifying all your .cpp files that you want to compile:

g++ -std=c++2a -o <executable_name> <source1.cpp> [source2.cpp …] The -std=c++2a option is required to tell GCC to enable C++20 support. This option will change to -std=C++20 once GCC is fully C++20 compliant.

Module Support

At the time of this writing, GCC only had experimental support for modules through a special version of GCC (branch devel/c++-modules). When you are using such a version of GCC, module support is enabled with the -fmodules-ts option, which might change to -fmodules in the future.

Unfortunately, import declarations of Standard Library headers such as the following were not yet properly supported:

import <iostream>; If that's the case, simply replace such import declarations with corresponding #include directives:

  1. include <iostream>

For example, the AirlineTicket example from Chapter 1 uses modules. After having replaced the imports for Standard Library headers with #include directives, you can compile the AirlineTicket example by changing to the directory containing the code and running the following command:

g++ -std=c++2a -fmodules-ts -o AirlineTicket AirlineTicket.cppm AirlineTicket.cpp AirlineTicketTest.cpp When it compiles without errors, you can run it as follows:

./AirlineTicket std::format Support Many code samples in this book use std::format(), introduced in Chapter 1. At the time of this writing, there was no compiler yet that had support for std::format(). However, as long as your compiler doesn't support std::format() yet, you can use the freely available {fmt} library as a drop-in replacement:

Download the latest version of the {fmt} library from https://fmt.dev/ and extract the code on your machine. Copy the include/fmt and src directories to fmt and src subdirectories in your project directory, and then add fmt/core.h, fmt/format.h, fmt/format-inl.h, and src/format.cc to your project. Add a file called format (no extension) to the root directory of your project and add the following code to it:

  1. pragma once
  2. define FMT_HEADER_ONLY
  3. include “fmt/format.h”

namespace std {

   using fmt::format;
   using fmt::format_error;
   using fmt::formatter;
}

Finally, add your project root directory (the directory containing the format file) as an additional include directory for your project. For example, in Visual C++, right click your project in the Solution Explorer, click Properties, go to Configuration Properties ➪ C/C++ ➪ General, and add $(ProjectDir); to the front of the Additional Include Directories option.“

NOTE Don't forget to undo these steps once your compiler supports the standard std::format().”

Companion Download Files: https://www.wiley.com/go/proc++5e.

CPP ABI (Application Binary Interface), CPP ABO (Asymmetric Binary Operation) , CPP Abstract Base Class, CPP Access Specifier, CPP Accumulate Algorithm, CPP Adapter Class, CPP Adaptive Composite Pattern, CPP Address Sanitizer, CPP Aggregate Initialization, CPP Aggregation Relationship, CPP Alignment Requirement, CPP Aligned Allocation, CPP Aligned Deallocation, CPP Aligned Storage, CPP Alignment-Support Types, CPP Allocator Adaptor, CPP Allocator Requirement, CPP Allocator-Aware Container, CPP Allocator-Extended Constructor, CPP Allocator-Extended Move Constructor, CPP Allocator-Extended Swap, CPP Allocation Function, CPP Allowable Exception Specification, CPP ALPHA Conversion (Renaming of Bound Variables), CPP Alternative Token, CPP Analysis-Based Optimization, CPP And Keyword, CPP And_Eq Keyword, CPP Angle Bracket Inclusion, CPP Anonymous Namespace, CPP Anti-Unification, CPP API Bindings for [[CPP Libraries]], CPP Argument Dependent Lookup, CPP Argument Pack, CPP Argument Unpacking, CPP Array Decay, CPP Array New Expression, CPP Array-Bound Safe Function, CPP Array-To-Pointer Conversion, CPP Articulated Lvalues, CPP Artificial Dependency Injection, CPP Artificial Instantiation, CPP Assert Macro, CPP Assigned-To Null Pointer Check, CPP AST (Abstract Syntax Tree), CPP AsIf Rule, CPP ASM Keyword, CPP Associated Type, CPP Assumption Hints, CPP Asynchronous Exception, CPP Atomic Compare-And-Exchange Operation, CPP Atomic Constraint, CPP Atomic Flag, CPP Atomic Operations Library, CPP Atomic Relaxed Operation, CPP Atomic Release-Acquire Operation, CPP Atomic Signal Fence, CPP Atomic Strong Compare Exchange, CPP Atomic Weak Compare Exchange, CPP Attribute Namespace, CPP Attribute Syntax, CPP Audit Keyword, CPP Auto Keyword, CPP Automatic Storage Duration, CPP Awaitable Type, CPP Background Thread in [[CPP]], CPP Back-Inserter Iterator, CPP Back-Inserter Iterator Adapter, CPP Backtrace Support, CPP Balanced Binary Tree In [[CPP]], CPP Bandwidth Optimization in [[CPP]], CPP Base Class Subobject, CPP Basic Exception Guarantee, CPP Basic Guarantee, CPP Basic Iostream, CPP Basic IOS, CPP Basic Istream, CPP Basic Ostream, CPP Basic Streambuf, CPP Begin Iterator, CPP Bessel Functions, CPP Bidir Iterator Category, CPP Bidirectional Iterator, CPP Big-O Notation in [[CPP Context]], CPP Binary Compatibility, CPP Binary Literal, CPP Binary Search Algorithm, CPP Binary Tree Implementation Detail, CPP Binding Pattern, CPP Bit Mask Operation, CPP Bit Shift Operation, CPP Bitand Keyword, CPP Bitfield Implementation, CPP Bitor Keyword, CPP Bitset Class, CPP Bitwise Complement, CPP Bitwise Operator Overload, CPP Block Scope, CPP Blocking Function Call, CPP Blocking I/O in [[CPP]], CPP Boilerplate Code Generation, CPP Bool Keyword, CPP Boolean Literal, CPP Brace Initialization, CPP Braced-Init-List, CPP Break Keyword, CPP Bridge Pattern in [[CPP]], CPP Built-In Type, CPP Built-In Function, CPP Built-In Operator, CPP Bundled Header Units, CPP Byte-Wise Operations, CPP Call Once Function, CPP Call Operator, CPP Callable Object, CPP Candidate Function, CPP Capacity Member Function, CPP Capturing Lambda, CPP Case Keyword, CPP Casting Operator Overload, CPP CDECL Calling Convention, CPP CeePlusPlus Language Linkage, CPP Character Literal, CPP Char16_T Keyword, CPP Char32_T Keyword, CPP Char Keyword, CPP Checked Iterators, CPP Chi-Squared Distribution, CPP Circular Buffer Implementation, CPP Class Key, CPP Class Member, CPP Class Scope, CPP Class Template, CPP Class Template Argument Deduction, CPP Class-Scoped Enumeration, CPP Cleanup Function, CPP Client-Side Abstraction, CPP Clocale Header, CPP Close Function for Streams, CPP Code Bloat Minimization, CPP Code Gen Optimization, CPP Code Generation Rule, CPP Code Smell Detection, CPP CoAwait Keyword, CPP CoReturn Keyword, CPP CoYield Keyword, CPP Collateral Class Template Instantiation, CPP Common Reference, CPP Common Type, CPP Compact Exception Model, CPP Compilation Firewalls, CPP Compilation Unit, CPP Complete Object, CPP Complex Number Type, CPP Compound Assignment Operator, CPP Compound Literal, CPP Compound Requirement, CPP Concept Keyword, CPP Concept Map, CPP Concept Predicate, CPP Concrete Type, CPP Conditional Explicit, CPP Conditional Inference, CPP Conditional Operator, CPP Conditional Variable, CPP Conforming Implementation, CPP Conformed Specialization, CPP Conformance Level, CPP Conformance Test Suite, CPP Conjunction Concept, CPP Constant Expression, CPP Constant Initialization, CPP Constant Interval Bound, CPP Const Keyword, CPP Const Member Function, CPP Const Volatile Qualifier, CPP Const_Assert Macro, CPP Consteval Keyword, CPP Constexpr Keyword, CPP Constexpr Constructor, CPP Constexpr Function, CPP Constinit Keyword, CPP Constexpr If Statement, CPP Constraint Expression, CPP Constraint Satisfaction, CPP Constraint_Based Overload Resolution, CPP Constructor Delegation, CPP Constructor Inheritance, CPP Constructor Template, CPP Contextual Conversion, CPP Continue Keyword, CPP Contract Programming, CPP Contravariant Parameter Type, CPP Conversion Function, CPP Conversion Operator, CPP Conversion Sequence, CPP Copy Assignment Operator, CPP Copy Constructor, CPP Copy Ellision, CPP Core Constant Expressions, CPP Core Guidelines, CPP Coroutine Frame, CPP Coroutine Handle, CPP Coroutine State Machine, CPP Coroutine Suspension, CPP Count Algorithm, CPP Covariant Return Type, CPP CRTP (Curiously Recurring Template Pattern), CPP CTAD (Class Template Argument Deduction), CPP CUDA Extensions For [[CPP]], CPP Curly Brace Scope, CPP Custom Deleter in Smart Pointer, CPP Custom Exception, CPP Custom Literal Suffix, CPP Dangling Pointer Detection, CPP Dangling Reference, CPP Data Member Alignment, CPP Data Member Padding, CPP Data Race, CPP Data Segment, CPP Debug Macro, CPP Debug Symbol, CPP Decay Type, CPP Decltype Keyword, CPP Decomposition Declaration, CPP Deduction Guide, CPP Deep Copy, CPP Default Argument, CPP Default Capture, CPP Default Constructor, CPP Default Initialization, CPP Default Member Initializer, CPP Defaulted Function, CPP Defaulted Move Constructor, CPP Deleted Function, CPP Deleter Object, CPP Deletion Overload, CPP Demangled Name, CPP Dependent Base, CPP Dependent Name, CPP Dependent Scope, CPP Dependent Type, CPP Dependent Type Name, CPP Deprecated Attribute, CPP Design Pattern Application, CPP Designated Initializer, CPP Destructor, CPP Device Code in [[CPP Offloading]], CPP Diagnostic Message, CPP Digit Separator, CPP Direct Base Class, CPP Direct Initialization, CPP Directive, CPP Discard Block, CPP Discard Statement, CPP Disjunction Concept, CPP DLL Export, CPP DLL Import, CPP Do Keyword, CPP Do-While Loop, CPP Documented Behavior, CPP Dominance Analysis, CPP Double Keyword, CPP Downcast Operation, CPP Downward Closure, CPP DRY Principle in [[CPP]], CPP Dynamic Allocation, CPP Dynamic Cast Keyword, CPP Dynamic Exception Specification, CPP Dynamic Initialization, CPP Dynamic Linkage, CPP Dynamic Polymorphism, CPP Dynamic Type, CPP Eager Instantiation, CPP EBCDIC Support, CPP Effective Modern [[CPP Book Reference]], CPP Ellipsis Parameter, CPP Empty Base Optimization, CPP Empty Class, CPP Empty Parameter Pack, CPP Enable If Utility, CPP End Iterator, CPP End Of File State, CPP Endl Manipulator, CPP Enumeration Underlying Type, CPP Enumerator, CPP Enum Keyword, CPP Equality Operator, CPP Equivalence Relation, CPP Erased Type, CPP Error Handling Strategy, CPP Error State Indicator, CPP Exception Filter, CPP Exception Guarantee, CPP Exception Handling, CPP Exception Object, CPP Exception Safe Functions, CPP Exception Specification, CPP Exception Translation, CPP Execinfo Integration, CPP Execution Character Set, CPP Execution Policy, CPP Exhaustive Instantiation, CPP Explicit Conversion Operator, CPP Explicit Keyword, CPP Export Keyword, CPP Extern Keyword, CPP External Linkage, CPP External Template, CPP ExternC Linkage, CPP Face-Deletion Operator, CPP False Keyword, CPP Fast Floating-Point Mode, CPP Field Alignment, CPP File Scope, CPP Filebuf Class, CPP Filesystem Directory Iterator, CPP Filesystem Path, CPP Final Specifier, CPP Fixed-Size Array, CPP Fixed-Width Integer, CPP Floating Point Environment, CPP Floating Point Literal, CPP Fold Expression, CPP For Keyword, CPP For Range Loop, CPP Forward Declaration, CPP Forward Iterator, CPP Forward List, CPP Forwarding Reference, CPP Four-Phase Name Lookup, CPP Friend Class, CPP Friend Declaration, CPP Friend Function, CPP Front Insertion Operator, CPP Full Expression, CPP Full Specialization, CPP Function Adapter, CPP Function Call Operator, CPP Function-Like Macro, CPP Function Object, CPP Function Overload, CPP Function Parameter Pack, CPP Function Pointer, CPP Function Template, CPP Function Template Partial Specialization, CPP Function Template Specialization, CPP Garbage Collection Interface, CPP Gcc Extension For [[CPP]], CPP Generalized Constant Expression, CPP Generic Lambda, CPP Generic Programming, CPP Getline Function, CPP Global New Operator, CPP Global Namespace, CPP Global Object, CPP Global Variable, CPP GPU Offloading Support, CPP Greater Comparator, CPP Guaranteed Copy Elision, CPP Guarded Suspension, CPP Half-Open Interval in Iterators, CPP Handler Block, CPP Has Include Preprocessor, CPP Hash Function Object, CPP Heap Allocation, CPP Heuristic Inline, CPP Hidden Friend Idiom, CPP Hidden Implementation Detail, CPP Homogeneous Function Template, CPP Hook Function, CPP I/O Manipulator, CPP I/O State Flag, CPP I/O Stream Buffer, CPP I/O Stream Iterator, CPP If Constexpr, CPP If Keyword, CPP If-Else Chain, CPP Ill-Formed Program, CPP Immediate Function, CPP Implementation-Defined Behavior, CPP Implementation Limit, CPP Import Keyword, CPP Incremental Compilation, CPP Indeterminate Value, CPP Index Sequence, CPP Indirect Call Optimization, CPP Inheritance Chain, CPP Inherited Constructor, CPP Inline Assembly, CPP Inline Keyword, CPP Inline Namespace, CPP Inline Variable, CPP Input Iterator, CPP Integral Constant Expression, CPP Integral Promotion, CPP Integer Division, CPP Integer Literal, CPP Internal Linkage, CPP Intrinsic Function, CPP Invalid Pointer, CPP Invocation Operator, CPP IOS Base, CPP IOS Flags, CPP IOS Format State, CPP IOS Precision, CPP IOS Width, CPP Iostream Synchronization, CPP IPC Mechanisms in [[CPP (Non-OS Generic)]], CPP ISO Standard Committee, CPP IsLiteralType Trait, CPP Iteration Statement, CPP Iterator Adapter, CPP Iterator Category, CPP Iterator Invalidation, CPP Iterator Traits, CPP JIT Compilation for [[CPP]], CPP Just-In-Time Debugging, CPP Key Function, CPP Keyword Recognition, CPP Koenig Lookup, CPP Label Declaration, CPP Lambda Capture, CPP Lambda Closure Type, CPP Lambda Expression, CPP Lambda Introducer, CPP Lambda Object, CPP Language Linkage, CPP Late Template Parsing, CPP Lexical Block, CPP LIFO Semantics, CPP Lifetime Extension of Temporaries, CPP Lifetime Profile, CPP Limit Macro, CPP Link Time Optimization, CPP Linker Script Interaction with [[CPP Symbols]], CPP Linker-Aided Optimization, CPP Linktime Polymorphism, CPP Literal Operator, CPP Literal Suffix, CPP Literal Type, CPP Local Class, CPP Local Static Variable, CPP Lock Guard, CPP Lock-Free Programming, CPP Logic And Operator, CPP Logic Not Operator, CPP Logic Or Operator, CPP Logical Conjunction, CPP Logical Disjunction, CPP Long Double Keyword, CPP Long Keyword, CPP Lookup Rule, CPP Loophole Casting, CPP Low-Level Memory Intrinsics, CPP Lvalue Reference, CPP Lvalue Transformation, CPP Machine Code Generation for [[CPP]], CPP Magic Statics, CPP Magnitude Type, CPP Main Function, CPP Make Shared, CPP Make Unique, CPP Mangling, CPP Map Container, CPP Masked Operation, CPP Maximum Munch Rule, CPP Memento Pattern in [[CPP]], CPP Member Access Operator, CPP Member Initializer List, CPP Member Template, CPP Member Variable Template, CPP Memory Fence, CPP Memory Model, CPP Memory Order, CPP Memory Resource, CPP Metaclasses Proposal, CPP Metaobject Facility, CPP Metaprogramming, CPP MinGW Toolchain, CPP Minimal Perfect Forwarding, CPP Modified UTF-8 Strings in [[CPP Context]], CPP Module Interface Unit, CPP Module Partition, CPP Module Purview, CPP Module Unit, CPP Module-Mapper, CPP Modules TS, CPP Move Assignment Operator, CPP Move Constructor, CPP Move Iterator, CPP Move Semantics, CPP MSVC Extensions, CPP Multiple Inheritance, CPP Multiway Merge, CPP Mutable Keyword, CPP Mutable Lambda, CPP Name Hiding, CPP Name Lookup, CPP Named Requirement, CPP Narrow Character Type, CPP Narrowing Conversion, CPP Namespace Alias, CPP Namespace Keyword, CPP Natvis Debug Visualization, CPP Nested Class, CPP Nested Exception, CPP Nested Lambda, CPP Nested Namespace, CPP Nested Template, CPP New Expression, CPP Nibble Access in Bitset, CPP No Except Keyword, CPP No Return Function, CPP No Unique Address Attribute, CPP Noop Mutex, CPP Normative Reference in Standard, CPP Not Keyword, CPP Not_Eq Keyword, CPP noexcept Operator, CPP Nothrow Guarantee, CPP Null Pointer Constant, CPP Nullptr Keyword, CPP Number Literal, CPP Numeric Limit, CPP ODR (One-Definition Rule), CPP ODR-Use, CPP Opaque Enum Declaration, CPP Open Multi-Methods in [[CPP (Visitor Pattern)]], CPP Operator Delete, CPP Operator Delete[], CPP Operator Function Id, CPP Operator New, CPP Operator New[], CPP Operator Overload, CPP Optional Class Template, CPP Order Statistics Tree (Extension), CPP Ordered Comparison, CPP Ordered Map, CPP Ordered Set, CPP Ordering Category, CPP Ostream Iterator, CPP Out Of Line Definition, CPP Out Parameter Style, CPP Out-Of-Class Member Definition, CPP Output Iterator, CPP Over Alignment Support, CPP Overload Resolution, CPP Overloaded Operator, CPP Overloaded Template, CPP Overriding Function, CPP Package Manager for [[CPP Libraries]], CPP Pair Class Template, CPP Panic Mode Recovery in Parser, CPP Parameter Pack, CPP Parameter Pack Expansion, CPP Parent Class, CPP Partial Ordering of Function Templates, CPP Partial Specialization, CPP Perfect Forwarding, CPP PH (Placeholders) In Templates, CPP Placement Delete, CPP Placement New, CPP Plain Old Data (POD) Type, CPP Pmr Allocator, CPP Pointer Arithmetic, CPP Pointer Decay, CPP Pointer Interconvertibility, CPP Pointer To Member, CPP Polymorphic Allocator, CPP Polymorphic Class, CPP Polymorphic Lambda, CPP Polymorphic Type, CPP Postfix Decrement Operator, CPP Postfix Increment Operator, CPP Precompiled Header, CPP Predefined Macro, CPP Prefix Decrement Operator, CPP Prefix Increment Operator, CPP Preprocessing Directive, CPP Private Base, CPP Private Inheritance, CPP Protected Inheritance, CPP Public Inheritance, CPP Pure Virtual Function, CPP Qualifier Adjustment, CPP Qualified Id, CPP Qualified Lookup, CPP Qualified Name Lookup, CPP Quick_Exit Function, CPP RAII (Resource Acquisition Is Initialization), CPP Random Device, CPP Range Based For Loop, CPP Range Concept, CPP Range-V3 Library Integration, CPP Raw String Literal, CPP Realloc Function Avoidance, CPP Rebind Allocator, CPP Recursion Limit, CPP Redundant Move, CPP Reference Collapsing Rules, CPP Reference Parameter, CPP Reference Wrapper, CPP Reflexpr Keyword, CPP Register Keyword, CPP Regular Type Concept, CPP Reinterpret_Cast Keyword, CPP Relaxed Constraint, CPP Release Mode, CPP Requires Clause, CPP Requires Expression, CPP Requires Keyword, CPP Requirement Body, CPP Requirement Parameter, CPP Resource Leak Detection, CPP Resource Management, CPP Restricted Aliasing, CPP Return Keyword, CPP Return Type Deduction, CPP Reverse Iterator, CPP RIAA (Reverse RAII Approach, Hypothetical), CPP Ring Buffer, CPP RNG (Random Number Generator) Expanded As Random Number Generator, CPP Rule Of Five, CPP Rule Of Three, CPP Runtime Polymorphism, CPP Runtime Type Information, CPP Safe Bool Idiom, CPP Sampling Distribution Function, CPP Sanitizer, CPP Sargable Expression in [[CPP (Hypothetical Term)]], CPP Scalar Replacement of Aggregates, CPP Scenario Testing in [[CPP Unit Tests]], CPP Scope Guard Idiom, CPP Scope Resolution Operator, CPP Scoped Enumeration, CPP Scoped Lock, CPP Scoped Thread, CPP Secondary Template, CPP Segmentation Fault Handling, CPP Selection Statement, CPP Semaphore, CPP Sequence Container, CPP Shallow Copy, CPP Shared Future, CPP Shared Lock, CPP Shared Mutex, CPP Shared Pointer, CPP Short Circuit Evaluation, CPP Short Keyword, CPP Signed Integer Type, CPP Signature (Function), CPP Silent Conversion, CPP Simple Declaration, CPP Single Inheritance, CPP Single Module Unit, CPP Singleton Pattern in [[CPP]], CPP Sized Deallocation, CPP Sized Deallocation Function, CPP Slicing Problem, CPP Slice Array, CPP Smart Pointer, CPP Snowflake Operator (Hypothetical Term), CPP Software Transactional Memory Proposal, CPP Source Code Transformation, CPP Spacer Iterator (Hypothetical Term), CPP Special Member Function, CPP Specialization, CPP SFINAE (Substitution Failure Is Not An Error), CPP Shift Left Operator Overload, CPP Shift Right Operator Overload, CPP Short Lived Object Optimization, CPP Signed Char Type, CPP Signal Handler Invocation, CPP Signature of a Callable, CPP Silent Failure In Templates, CPP Sized Array To Pointer Decay, CPP Slice Iterator (Hypothetical Term), CPP Small Buffer Optimization, CPP Sort Algorithm, CPP Sorting Network Implementation, CPP Source Code Translation Unit, CPP Specialized Allocator, CPP Speculative Load, CPP Spin Lock Implementation, CPP Spurious Wakeup Prevention, CPP SSO (Small String Optimization), CPP Stable Partition, CPP Stack Allocation, CPP Standard Algorithm, CPP Standard Atomic, CPP Standard Backward Compatibility, CPP Standard Basic_String, CPP Standard Bitset, CPP Standard Byte Type, CPP Standard Charconv, CPP Standard Chrono, CPP Standard Codecvt, CPP Standard Compare, CPP Standard Concurrency Support, CPP Standard Condition_Variable, CPP Standard Container Adaptors, CPP Standard Container Erasure, CPP Standard Container Invalidation Rules, CPP Standard Deque, CPP Standard Duration, CPP Standard Dynamic Extent, CPP Standard Execution Policy, CPP Standard Filesystem, CPP Standard Fixed Size Array, CPP Standard Forward_List, CPP Standard Fstream, CPP Standard Function, CPP Standard Future, CPP Standard Hash, CPP Standard Iomanip, CPP Standard Ios, CPP Standard Iostream, CPP Standard Iostream Synchronization, CPP Standard Istream, CPP Standard Iterator, CPP Standard Layout Type, CPP Standard Library, CPP Standard List, CPP Standard Locale, CPP Standard Map, CPP Standard Memory, CPP Standard MultiMap, CPP Standard MultiSet, CPP Standard Mutex, CPP Standard Optional, CPP Standard Ostream, CPP Standard Pair, CPP Standard Priority_Queue, CPP Standard Promise, CPP Standard Queue, CPP Standard Random, CPP Standard Ratio, CPP Standard Raw Storage Iterator, CPP Standard Regex, CPP Standard Relaxed Iterator Concept, CPP Standard Scoped_Allocator_Adaptor, CPP Standard Set, CPP Standard Shared_Future, CPP Standard Shared_Ptr, CPP Standard Span, CPP Standard Stack, CPP Standard Streambuf, CPP Standard String, CPP Standard String_View, CPP Standard System_Error, CPP Standard Template Library (STL), CPP Standard Thread, CPP Standard Tuple, CPP Standard Type Erasure, CPP Standard Type Traits, CPP Standard Unique_Lock, CPP Standard Unique_Ptr, CPP Standard Unordered_Map, CPP Standard Unordered_Multimap, CPP Standard Unordered_Multiset, CPP Standard Unordered_Set, CPP Standard Utility, CPP Standard Valarray, CPP Standard Variant, CPP Standard Vector, CPP Static_assert Keyword, CPP Static Keyword, CPP Static Allocation, CPP Static Cast Keyword, CPP Static Data Member, CPP Static Storage Duration, CPP Storage Class Specifier, CPP Strict Aliasing Rule, CPP String Literal, CPP Stringification Macro, CPP Strong Exception Guarantee, CPP Structured Binding, CPP Subobject, CPP Substitution Failure, CPP Synchronized Pool Resource, CPP Synchronization Primitives, CPP Syntactic Category, CPP SzArray (Hypothetical Term), CPP Template Argument Deduction, CPP Template Class, CPP Template Constrained Function, CPP Template Friend, CPP Template Instantiation, CPP Template Metaprogramming, CPP Template Parameter, CPP Template Parameter Pack Expansion, CPP Template Partial Specialization, CPP Template Specialization, CPP Temporary Materialization, CPP Ternary Operator, CPP This Keyword, CPP Thread Local Keyword, CPP Thread Safe Initialization, CPP Three Way Comparison Operator, CPP Throw Expression, CPP Throw Keyword, CPP Token Concatenation, CPP Token Pasting Operator, CPP Traits Class, CPP Trampoline Function Technique, CPP Translation Unit, CPP Trigraph Sequence, CPP Trivial Class, CPP Trivial Type, CPP True Keyword, CPP Try Keyword, CPP TU (Translation Unit) Expanded As Translation Unit, CPP Type Alias, CPP Type Alias Template, CPP Type Deduction, CPP Type Erasure Idiom, CPP Type Id Expression, CPP Type Parameter Pack, CPP Type Promotion, CPP Type Safe Union, CPP Type Trait, CPP Type Transformation, CPP Type_Safe Enum Idiom, CPP Typename Keyword, CPP Underlying Type, CPP Unicode Literal, CPP Union Keyword, CPP Union Member, CPP Unique Address Optimization, CPP Uninitialized Fill, CPP Uninitialized Memory, CPP Uninitialized Value, CPP Universal Reference, CPP Unnamed Namespace, CPP Unordered Container, CPP Unreachable Code, CPP Unsigned Integer Type, CPP Utility Forward, CPP Value Category, CPP Value Initialization, CPP Variable Template, CPP Variadic Macro, CPP Variadic Template, CPP Vectorization Strategies, CPP Virtual Base Class, CPP Virtual Dispatch, CPP Virtual Function Table (VFT), CPP Virtual Function, CPP Virtual Inheritance, CPP Visible Entity, CPP Visibility Attribute, CPP Volatile Keyword, CPP Wchar_T Keyword, CPP Weak Symbol, CPP Wide Character Literal, CPP Wide String Literal, CPP Wide-Char Stream, CPP Widen Function, CPP Widening Conversion, CPP Working Draft of [[CPP Standard]], CPP Xor Keyword, CPP Xor_Eq Keyword, CPP Zero Initialization

C Plus Plus | C++: Effective CPP | Effective C++, C Plus Plus Best Practices | C++ Best Practices, CPP Core Guidelines (CG) by Bjarne Stroustrup and Herb Sutter | C++ Core Guidelines (CG) by Bjarne Stroustrup and Herb Sutter, C Plus Plus Fundamentals | C++ Fundamentals, C Plus Plus Inventor | C++ Inventor - C Plus Plus Language Designer | C++ Language Designer: Bjarne Stroustrup in 1985; C Plus Plus Keywords | C++ Keywords, CPP Built-In Data Types | C++ Built-In Data Types, C Plus Plus Data Structures | C++ Data Structures (CPP Containers) - C Plus Plus Algorithms | C++ Algorithms, C Plus Plus Syntax | C++ Syntax, C Plus Plus OOP | C++ OOP - C Plus Plus Design Patterns | C++ Design Patterns, Clean C Plus Plus | Clean C++ - C Plus Plus Style Guide | C++ Style Guide - C Plus Plus BDD | C++ BDD, C Plus Plus Standards | C++ Standards (C Plus Plus 23 | C++ 23, C Plus Plus 20 | C++ 20, C Plus Plus 17 | C++ 17, C Plus Plus 14 | C++ 14, C Plus Plus 11 | C++ 11, C Plus Plus 03 | C++ 03, C Plus Plus 98 | C++ 98), Bjarne Stroustrup's C Plus Plus Glossary | Bjarne Stroustrup's C++ Glossary - Glossaire de CCP - French, CppReference.com, CPlusPlus.com, ISOcpp.org, C Plus Plus Compilers | C++ Compilers (Compiler Explorer, MinGW), C Plus Plus IDEs | C++ IDEs, C Plus Plus Development Tools | C++ Development Tools, C Plus Plus Linter | C++ Linter, C Plus Plus Debugging | C++ Debugging, C Plus Plus Modules | C++ Modules (C Plus Plus 20 | C++20), C Plus Plus Packages | C++ Packages, C Plus Plus Package Manager | C++ Package Manager (Conan - the C/C Plus Plus Package Manager | Conan - the C/C++ Package Manager), C Plus Plus Standard Library | C++ Standard Library, C Plus Plus Libraries | C++ Libraries, C Plus Plus Frameworks | C++ Frameworks, C Plus Plus DevOps | C++ DevOps - C Plus Plus SRE | C++ SRE, C Plus Plus CI/CD | C++ CI/CD (C Plus Plus Build Pipeline | C++ Build Pipeline), C Plus Plus Data Science | C++ Data Science - C Plus Plus DataOps | C++ DataOps, C Plus Plus Machine Learning | C++ Machine Learning, C Plus Plus Deep Learning | C++ Deep Learning, Functional C Plus Plus | Functional C++, C Plus Plus Concurrency | C++ Concurrency, C Plus Plus History | C++ History, C Plus Plus Topics | C++ Topics, C Plus Plus Bibliography | C++ Bibliography, Manning CPP Series | Manning C++ Series, C Plus Plus Courses | C++ Courses, CppCon, C Plus Plus Research | C++ Research, C Plus Plus GitHub | C++ GitHub, Written in C Plus Plus | Written in C++, C Plus Plus Popularity | C++ Popularity, C Plus Plus Awesome | C++ Awesome, C Plus Plus Versions | C++ Versions. (navbar_cplusplus – see also navbar_cpp_containers, navbar_cppcon, navbar_cpp_core_guidelines, navbar_cpp23, navbar_cpp20, navbar_cpp17, navbar_cpp14, navbar_cpp11)


Cloud Monk is Retired ( for now). Buddha with you. © 2025 and Beginningless Time - Present Moment - Three Times: The Buddhas or Fair Use. Disclaimers

SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.


professional_c_plus_plus_introduction.txt · Last modified: 2025/02/01 06:35 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki