Foreword by Shawn Edwards xiii
Foreword by Andrei Alexandrescu xv
Acknowledgments xix
About the Authors xxv
What Makes This Book Different 1
Scope for the First Edition 2
The EMC++S Guiding Principles 3
What Do We Mean by Safely? 4
A Safe Feature 5
A Conditionally Safe Feature 5
An Unsafe Feature 6
Modern C++ Feature Catalog 6
How to Use This Book 8
1.1 C++11 11
Attribute Syntax | Generalized Attribute Support 12
Consecutive >s | Consecutive Right-Angle Brackets 21
decltype | Operator for Extracting Expression Types 25
Defaulted Functions | Using = default for Special Member Functions
33
Delegating Ctors | Constructors Calling Other Constructors 46
Deleted Functions | Using = delete for Arbitrary Functions 53
explicit Operators | Explicit Conversion Operators 61
Function static '11 | Thread-Safe Function-Scope static Variables
68
Local Types '11 | Local/Unnamed Types as Template Arguments 83
long long | The long long (≥64 bits) Integral Type 89
noreturn | The [[noreturn]] Attribute 95
nullptr | The Null-Pointer-Literal Keyword 99
override | The override Member-Function Specifier 104
Raw String Literals | Syntax for Unprocessed String Contents
108
static_assert | Compile-Time Assertions 115
Trailing Return | Trailing Function Return Types 124
Unicode Literals | Unicode String Literals 129
using Aliases | Type/Template Aliases (Extended typedef) 133
1.2 C++14 138
Aggregate Init '14 | Aggregates Having Default Member Initializers
138
Binary Literals | Binary Literals: The 0b Prefix 142
deprecated | The [[deprecated]] Attribute 147
Digit Separators | The Digit Separator (') 152
Variable Templates | Templated Variable Declarations/Definitions
157
2.1 C++11 167
alignas | The alignas Specifier 168
alignof | The alignof Operator 184
auto Variables | Variables of Automatically Deduced Type 195
Braced Init | Braced-Initialization Syntax: {} 215
constexpr Functions | Compile-Time Invocable Functions 257
constexpr Variables | Compile-Time Accessible Variables 302
Default Member Init | Default class/union Member Initializers
318
enum class | Strongly Typed, Scoped Enumerations 332
extern template | Explicit-Instantiation Declarations 353
Forwarding References | Forwarding References (T&&) 377
Generalized PODs '11 | Trivial and Standard-Layout Types 401
Inheriting Ctors | Inheriting Base-Class Constructors 535
initializer_list | List Initialization: std::initializer_list
553
Lambdas | Anonymous Function Objects (Closures) 573
noexcept Operator | Asking if an Expression Cannot throw 615
Opaque enums | Opaque Enumeration Declarations 660
Range for | Range-Based for Loops 679
Rvalue References | Move Semantics and Rvalue References
(&&) 710
Underlying Type '11 | Explicit Enumeration Underlying Type 829
User-Defined Literals | User-Defined Literal Operators 835
Variadic Templates | Variable-Argument-Count Templates 873
2.2 C++14 958
constexpr Functions '14 | Relaxed Restrictions on constexpr
Functions 959
Generic Lambdas | Lambdas Having a Templated Call Operator 968
Lambda Captures | Lambda-Capture Expressions 986
3.1 C++11 997
carries_dependency | The [[carries_dependency]] Attribute 998
final | Prohibiting Overriding and Derivation 1007
friend '11 | Extended friend Declarations 1031
inline namespace | Transparently Nested Namespaces 1055
noexcept Specifier | The noexcept Function Specification 1085
Ref-Qualifiers | Reference-Qualified Member Functions 1153
union '11 | Unions Having Non-Trivial Members 1174
3.2 C++14 1182
auto Return | Function (auto) Return-Type Deduction 1182
decltype(auto) | Deducing Types Using decltype Semantics 1205
Glossary 1217
Bibliography 1281
Index 1305
Dr. John Lakos is a senior architect and mentor for software
development at Bloomberg LP, where he created the BDE team (c.
2001), which maintains Bloomberg's open-source foundation libraries
for C++ development worldwide. He is the author of Large-Scale C++
Software Design and Large-Scale C++ Volume I: Process and
Architecture (both from Addison-Wesley), and is an active voting
member of the C++ Standards Committee.
Vittorio Romeo is a senior software engineer at Bloomberg,
building mission-critical C++ middleware and training colleagues on
modern C++. He is also the creator of many open-source C++
libraries and games.
Dr. Rostislav Khlebnikov is a team lead and senior software
engineer in Bloomberg’s BDE team, where he directs the development
of high-performance C++ foundation software.
Alisdair Meredith is a senior software engineer in
Bloomberg’s BDE team and a long-standing member of the C++
Standards Committee, where he was the Chair of its Library Working
Group between 2010 and 2015.
Ask a Question About this Product More... |