JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.
If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.
If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.
| CodeSonar® 9.2p0 | CONFIDENTIAL | CodeSecure Inc |
This section describes the current state of CodeSonar support for the various C++ standards, summarized in the following table.
| C++ Standard | CodeSonar Support Status | |
|---|---|---|
| C++98 | ISO/IEC 14882:1998 | all features supported |
| C++11 (C++0x) | ISO/IEC 14882:2011 | all features supported |
| C++14 (C++1y) | ISO/IEC 14882:2014 | all features supported |
| C++17 (C++1z) | ISO/IEC 14882:2017 | all features supported |
| C++20 | ISO/IEC 14882:2020 | most features supported |
| C++23 | - | some features supported |
| C++26 | - | no features supported |
CodeSonar parses and generates internal representation for all features from these standards.
| C++98 | ISO/IEC 14882:1998 |
|---|---|
| C++11 (C++0x) | ISO/IEC 14882:2011 |
| C++14 | ISO/IEC 14882:2014 |
| C++17 | ISO/IEC 14882:2017 |
CodeSonar supports most features from C++20, as shown in the following table.
| Parsed and internal representation (IR) generated | ||
|---|---|---|
| __VA_OPT__ | P0306R4, P1042R1 | |
| Designated initializers | P0329R4 | |
| Permit conversions to arrays of unknown bound | P0388R4 | |
| Allow lambda capture [=, this] | P0409R2 | |
| Familiar template syntax for generic lambdas | P0428R2 | |
| [[likely]] and [[unlikely]] attributes | P0479R5 | |
| char8_t: A type for UTF-8 characters and strings | P0482R6 | |
| Spaceship | P0515R3, P0905R1, P1120R0, P1185R2, P1186R3, P1630R1, P1959R0, P20002R1, P2085R0 | |
| Simplifying implicit lambda capture | P0588R1 | |
| std::is_constant_evaluated() | P0595R2 | |
| Range-based for statements with initializer | P0614R1 | |
| Default constructible and assignable stateless lambdas | P0624R2 | |
| Make "typename" more optional | P0634R3 | |
| const mismatch with defaulted copy constructor (core issue 1331) | P0641R2 | |
| Coroutines | P0664R8, P0912R5, P2107R0 | |
| Default member initializers for bit-fields | P0683R1 | |
| Access Checking on Specializations | P0692R1 | |
| Constructor Template Argument Deduction | P0702R1 | |
| Fixing const qualified-pointers-to-members. | P0704R1 | |
| Efficient sized delete for variable sized classes | P0722R3 | |
| Non-Type Template Parameters | P0732R2, P1907R1 | |
| Concepts: all except those associated with P2103R0 and P2113R0 | P0734R0, P0857R0, P1084R2, P1141R2, P1452R2, P1616R1, P1972R0, P1980R0, P2092R0, | |
| Deprecate POD | P0767R1 | |
| Lambda init-capture | P0780R2, P2095R0 | |
| More constexpr containers | P0784R7 | |
| Deprecate implicit capture of this via [=] | P0806R2 | |
| Language support for empty objects | P0840R2 | |
| ADL and Function Templates that are not visible | P0846R0 | |
| Conditionally Trivial Special Member Functions | P0848R3 | |
| explicit(bool) | P0892R2 | |
| Checking for abstract class types | P0929R2 | |
| Integrating feature-test macros into the C++ WD | P0941R2 | |
| Allow initializing aggregates from a parenthesized list of values | P0960R3 | |
| Relaxing structured bindings customization point | P0961R1 | |
| Relaxing the range-for loop customization point finding rules | P0962R1 | |
| Allow structured bindings to accessible members | P0969R0 | |
| try-catch blocks in constexpr functions | P1002R1 | |
| Prohibit aggregates with user-declared constructors | P1008R1 | |
| Array size deduction in new-expressions | P1009R2 | |
| Allowing Virtual Function Calls in Constant Expressions | P1064R0 | |
| Immediate functions | P1073R3 | |
| Extending structured bindings to be more like variable declarations | P1091R3 | |
| Nested inline namespaces | P1094R2 | |
| Using Enum | P1099R5 | |
| Adding the constinit keyword | P1143R2 | |
| Deprecating volatile | P1152R4 | |
| Deprecate uses of the comma operator in subscripting expressions | P1161R3 | |
| Adopt source_location for C++20 | P1208R6 | |
| Core Issue 1778: exception-specification in explicitly-defaulted functions | P1286R2 | |
| [[nodiscard("should have a reason")]] | P1301R4 | |
| Allowing dynamic_cast and polymorphic typeid in constant expressions | P1327R1 | |
| Changing an active union member in constant expressions | P1330R0 | |
| Permitting trivial default initialization in constexpr contexts | P1331R2 | |
| Missing Feature Test Macros | P1353R0 | |
| Reference capture of structured bindings. | P1381R1 | |
| Enabling constexpr intrinsics by permitting unevaluated inline-assembly in constexpr functions | P1668R1 | |
| [[nodiscard]] for constructors | P1771R1 | |
| Wording for Class Template Argument Deduction for Alias Templates | P1814R0 | |
| Implicit move for more local objects and rvalue references | P1825R0 | |
| Fixing inconsistencies between constexpr and consteval functions | P1937R2 | |
| Allow defaulting comparisons by value | P1946R0 | |
| Converting from T* to bool should be considered narrowing | P1957R2 | |
| Fixing the wording of parenthesized aggregate-initialization | P1975R0 | |
| Modules: Disallow "export import foo" outside of module interface | P2109R0 | |
| Not yet supported | ||
| Wording for lambdas in unevaluated contexts | P0315R4 | |
| When are constexpr member functions defined? (core issue 1581) | P0859R0 | |
| Modules | P1103R3, P1703R1, P1766R1, P1779R3, P1811R0, P1815R2, P1857R3, P1874R1, P1979R0, P2115R0 | |
| Alternative Wording for P0907R4 Signed Integers are Two's Complement | P1236R1 | |
| CTAD | P1816R0, P2082R1 | |
| Reserving Attribute Namespaces for Future Use | P1908R1 | |
Concepts:
|
P2103R0 | |
| Concepts: Disallow changing concept values | P2104R0 | |
Concepts:
|
P2113R0 | |
CodeSonar supports many features from C++23, as shown in the following table.
| Parsed and internal representation (IR) generated | ||
|---|---|---|
| Literal Suffix for (signed) size_t | P0330R8 | |
| Deducing this | P0847R7 | |
| Make () more optional for lambdas (Down with ()!) | P1102R2 | |
| if consteval | P1938R3 | |
| Non-literal variables (and labels and gotos) in constexpr functions | P2242R3 | |
| auto(x) and auto {x} | P0849R8 | |
| Extended floating-point types and standard names | P1467R9 | |
| DR: C++ Identifier Syntax using Unicode Standard Annex 31 | P1949R7 | |
| DR: Allow Duplicate Attributes | P2156R1 | |
| Attributes on lambda expression | P2173R1 | |
| Labels at the end of compound statements (C compatibility) | P2324R2 | |
| Add support for preprocessing directives elifdef and elifndef | P2334R1 | |
| Support for #warning | P2437R1 | |
| Missing feature test macros for C++20 core papers | P2493R0 | |
| Not yet supported | ||
| Removing Garbage Collection Support | P2186R2 | |
| Character encoding of diagnostic text | P2246R1 | |
| Consistent character literal encoding | P2316R2 | |
| static operator() | P1169R4 | |
| Narrowing contextual conversions to bool | P1401R5 | |
| Portable assumptions [[assume]] | P1774R8 | |
| Declarations and where to find them | P1787R5 | |
| Make declaration order layout mandated | P1847R4 | |
| Proposed resolution for core issues 411, 1656, and 2333; numeric and universal character escapes in character and string literals | P2029R4 | |
| Change scope of lambda trailing-return-type | P2036R3 | |
| Named universal character escapes | P2071R2 | |
| Generalized wording for partial specializations | P2096R2 | |
| Multidimensional subscript operator | P2128R6 | |
| Mixed string literal concatenation | P2201R1 | |
| Trimming whitespaces before line splicing | P2223R2 | |
| Simpler implicit move | P2266R3 | |
| DR: Using unknown pointers and references in constant expressions | P2280R4 | |
| Delimited escape sequences | P2290R3 | |
| Support for UTF-8 as a portable source file encoding | P2295R6 | |
| Character sets and encodings | P2314R4 | |
| DR: De-deprecating volatile bitwise compound assignment operations | P2327R1 | |
| Extend init-statement to allow alias-declaration | P2360R0 | |
| Remove non-encodable wide character literals and multicharacter wide character literals | P2362R3 | |
| Relaxing some constexpr restrictions | P2448R2 | |
| DR: Relax requirements on wchar_t to match existing practices | P2460R2 | |
| DR: The Equality Operator You Are Looking For | P2468R2 | |
| DR: char8_t Compatibility and Portability Fix | P2513R4 | |
| DR: consteval needs to propagate up | P2564R3 | |
| Wording for class template argument deduction from inherited constructors | P2582R1 | |
| static operator[] | P2589R1 | |
| DR: Meaningful exports | P2615R0 | |
| Responses to NB comments on DTS 12907 "Extensions to C++ for Transactional Memory Version 2" | P2617R0 | |
| Permitting static constexpr variables in constexpr functions | P2647R1 | |
| Extending the lifetime of temporaries in range-based for loop initializer | P2718R0 | |
| Proposed resolution for CWG2692 Static and explicit object member functions with the same parameter-type-lists | P2797R0 | |
CodeSonar does not yet support C++26 features.
| Not yet supported | ||
|---|---|---|
| Unevaluated strings | P2361R6 | |
| Add @, $, and ` to the basic character set | P2558R2 | |
| constexpr cast from void*: towards constexpr type-erasure | P2738R1 | |
| User-generated static_assert messages | P2741R3 | |
| A nice placeholder with no name | P2169R4 | |
| DR: On the ignorability of standard attributes | P2552R3 | |
| DR: Static storage for braced initializers | P2752R3 | |
| Pack Indexing | P2662R3 | |
| DR: Template parameter initialization | P2308R1 | |
| Remove Deprecated Arithmetic Conversion on Enumerations From C++26 | P2864R2 | |
| Disallow Binding a Returned Glvalue to a Temporary | P2748R5 | |
| DR: Clarifying rules for brace elision in aggregate initialization | P3106R1 | |
| Attributes for Structured Bindings | P0609R3 | |
| DR: Module Declarations Shouldn’t be Macros | P3034R1 | |
| DR: Trivial infinite loops are not Undefined Behavior | P2809R3 | |
| Erroneous behaviour for uninitialized reads | P2795R5 | |
| = delete("should have a reason"); | P2573R2 | |
| Variadic friends | P2893R3 | |
To report problems with this documentation, please visit https://support.codesecure.com/.