C++14 Language Elements Supported in Polyspace
This table provides a partial list of C++ language elements that have been introduced since C++14 and its corresponding Polyspace® support. If your code contains nonsupported constructions, Polyspace reports a compilation error.
C++14 Std Ref | Description | Supported |
---|---|---|
C++2014-N3323 | Implicit conversion from class type in certain contexts such as
delete or switch
statement. | This C++14 feature allows implicit conversion from class type in certain contexts. No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3462 | More SFINAE-friendly std::result_of | Yes |
C++2014-N3472 | Binary literals, for instance, 0b100 . | Yes |
C++2014-N3545 | operator() in integral_constant
template of constexpr type | Yes |
C++2014-N3637 | Relation between std::async and destructor of
std::future | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3638 | Automatic deduction of return type for functions where an explicit return type is not specified | Yes. In some cases, Code Prover can show compilation errors. |
C++2014-N3642 | Suffixes for user-defined literals indicating time
(h , min , s ,
ms , us , ns )
and strings (s ) | Yes |
C++2014-N3648 | Initialization of captured members in lambda functions | Yes. In some cases, during initialization, Code Prover can call the corresponding constructors more number of times than necessary. |
C++2014-N3649 | Generic (polymorphic) lambda expressions:
| Yes |
C++2014-N3651 | Variable templates | Yes |
C++2014-N3652 | Declarations, conditions and loops in constexpr
functions. | Yes |
C++2014-N3653 | Initialization of aggregate classes with fewer initializers than members For instance, this initialization has fewer
initializers than members. The member struct S { int a; const char* b; int c; int d = b[a];}; S ss = { 1, "asdf" }; | Yes |
C++2014-N3654 | std::quoted | Yes |
C++2014-N3656 | std::make_unique | Yes |
C++2014-N3658 | std::integer_sequence | Yes |
C++2014-N3658 | std::shared_lock | No. The use of |
C++2014-N3664 | Calling new and delete
operators in batches. | This C++14 feature clarifies how successive calls to the
new operator are implemented. No new
syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3668 | std::exchange | Partially supported. |
C++2014-N3670 | Using std::get with a data type to get one element
in an std::tuple (provided there is only one element
of the type in the tuple) | Yes |
C++2014-N3671 | Overloads for std::equal ,
std::mismatch and
std::is_permutation function templates that
accept two separate ranges | Yes |
C++2014-N3733 | Removal of std::gets from
<cstdio> | Yes |
C++2014-N3776 | Wording change for destructor of
std::future | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3779 | std::complex literals representing pure imaginary
numbers with suffix i , if or
il | Yes |
C++2014-N3781 | Use of single quotation mark as digit separator, for instance,
1'000 . | Yes |
C++2014-N3786 | Prohibiting "out of thin air' results in C++14 | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3910 | Synchronizing behavior of signal handlers | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3924 | Discouraging use of rand() | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
C++2014-N3927 | Lock-free executions | No new syntax/keyword is introduced and therefore does not affect Polyspace support for C++14. |
See Also
C++ standard version (-cpp-version)