| description | Learn more about the C26455 DEFAULT_CTOR_NOEXCEPT C++ Core Guidelines Checker warning. Default constructors shouldn't do anything that can throw. | ||
|---|---|---|---|
| title | Warning C26455 | ||
| ms.date | 04/29/2022 | ||
| f1_keywords |
|
||
| helpviewer_keywords |
|
||
| ms.assetid | 27e86063-d969-49d8-8912-dcc2dc57249f | ||
| author | kylereedmsft | ||
| ms.author | kylereed | ||
| ms.custom | kr2b-contr-experiment |
Default constructor should not throw. Declare it '
noexcept' (f.6)
The C++ Core Guidelines suggest that default constructors shouldn't do anything that can throw. If the default constructor is allowed to throw, operations such as move and swap will also throw which is undesirable because move and swap should always succeed. Parameterized constructors may throw.
Consider the default constructors of the STL types, like std::vector. In these implementations, the default constructors initialize internal state without making allocations. In the std::vector case, the size is set to 0 and the internal pointer is set to nullptr. The same pattern should be followed for all default constructors.
Code analysis name: DEFAULT_CTOR_NOEXCEPT