Namespaces
Variants

Zero-overhead principle

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Принцип нулевых накладных расходов — это принцип проектирования в C++, который гласит:

  1. Вы не платите за то, что не используете.
  2. То, что вы используете, работает так же эффективно, как если бы вы написали это вручную.

В общем случае это означает, что в C++ не следует добавлять никакие возможности, которые бы накладывали дополнительные затраты, будь то временные или пространственные, превышающие те, которые программист мог бы внести без использования этих возможностей.

Единственные две особенности языка, которые не следуют принципу нулевых накладных расходов, это runtime type identification и exceptions , и именно поэтому большинство компиляторов включают опцию для их отключения.

Внешние ссылки

1. Основы C++ - Бьярне Страуструп
2. Исключения C++ и альтернативы - Бьярне Страуструп
3. Дефрагментация C++ - Сделать Исключения и RTTI Более Доступными и Удобными - Херб Саттер
4. Бьярне Страуструп: C++ в подкасте об Искусственном Интеллекте (AI)