Zero-overhead principle
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
C++ language
General topics
Conditional execution statements
Iteration statements (loops)
Jump statements
Dynamic exception specifications (until C++17*)
noexcept
specifier (C++11) Exceptions
Namespaces
Types
Specifiers
User-defined (C++11)
Utilities
Attributes (C++11)
Types
Type alias declaration (C++11)
Casts
Memory allocation
Class-specific function properties
Special member functions
Miscellaneous
The zero-overhead principle is a C++ design principle that states:
- You don't pay for what you don't use.
- What you do use is just as efficient as what you could reasonably write by hand.
In general, this means that no feature should be added to C++ that would impose any overhead, whether in time or space, greater than a programmer would introduce without using the feature.
The only two features in the language that do not follow the zero-overhead principle are runtime type identification and exceptions, and are why most compilers include a switch to turn them off.
[edit] External links
1.
Foundations of C++ - Bjarne Stroustrup
2.
C++ exceptions and alternatives - Bjarne Stroustrup