C++20 Language Elements Supported in Polyspace
This table provides a partial list of C++ language elements that have been introduced since C++20 and its corresponding Polyspace® support. If your code contains unsupported features or libraries, Polyspace reports a compilation error.
For details about these new features, see C++20.
Feature | Supported |
---|---|
New lambda capture [=,this] | Yes |
New macro __VA_OPT__ | Yes |
Designated initializer | Yes |
Lambda expressions with an explicit template parameter list | Yes |
Default member initializers for bit-fields | Yes |
Initializer list constructors in class template argument deduction | Yes |
const& -qualified pointers to members | Yes |
Concepts | Yes |
Lambdas disallowed in certain contexts | Yes |
Three-way comparison operator | Yes |
init-statements for range-based for | Yes |
Default constructible and assignable stateless lambdas | Yes |
Access checking on specializations | Yes |
ADL and function templates that are not visible | Yes |
Attributes [[likely]] and [[unlikely]] | Yes |
Make typename more optional | Yes |
Pack expansion in lambda init-capture | Yes |
Attribute [[no_unique_address]] | Yes |
Conditionally Trivial Special Member Functions | Yes |
Relaxing the structured bindings customization point finding rules | Yes |
Relaxing the range-for loop customization point finding rules | Yes |
Allow structured bindings to accessible members | Yes |
Destroying operator delete | Yes |
Class types in non-type template parameters | Yes |
Deprecate implicit capture of this via [=] | Yes |
explicit(bool) | Yes |
Integrating feature-test macros | Yes |
Prohibit aggregates with user-declared constructors | Yes |
constexpr virtual function | Yes |
char8_t | Yes |
std::is_constant_evaluated() | Yes |
constexpr try-catch blocks | Yes |
Immediate functions (consteval) | Yes |
Nested inline namespaces | Yes |
Yet another approach for constrained declarations | Yes |
dynamic_cast and polymorphic typeid in constant expressions | Yes |
Changing the active member of a union inside constexpr | Yes |
Parenthesized initialization of aggregates | Yes |
Coroutines | Yes |
Array size deduction in new-expressions | Yes |
<=> != == | Yes |
Explicitly defaulted functions with different exception specifications | Yes |
Lambda capture and storage class specifiers of structured bindings | Yes |
Permit conversions to arrays of unknown bound | Yes |
constexpr container operations | Yes |
costinit | Yes |
[[nodiscard]] with message | Yes |
Trivial default initialization in constexpr functions | Yes |
Unevaluated asm-declaration in constexpr functions | Yes |
using enum | Yes |
Synthesizing three-way comparison for specified comparison category | Yes |
[[nodiscard]] for constructors | Yes |
Class template argument deduction for alias templates | Yes |
Class template argument deduction for aggregates | Yes |
Implicit move for more local objects and rvalue references | Yes |
Structural types as non-type template argument | Yes |
See Also
C++ standard version (-cpp-version)
Topics
- C/C++ Language Standard Used in Polyspace Analysis
- C++11 Language Elements Supported in Polyspace
- C++14 Language Elements Supported in Polyspace