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