Main Content

AUTOSAR C++14 Rule A1-1-1

All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features

Description

Rule Definition

All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features.

Rationale

The AUTOSAR C++14 guidelines are based on the C++14 standard (ISO/IEC 14882:2014). Language extensions outside the standard are not covered by these guidelines. If you follow the AUTOSAR C++14 guidelines for safe and secure coding, you must stay within the C++14 standard for the guidelines to cover your code.

Polyspace Implementation

The rule checker reports language extensions that are not strictly part of the C++14 Standard. The extensions could be part of a later standard or part of a specific dialect such as GCC or Microsoft® Visual C++®. The rule violations are reported as compilation errors as a strict C++14 compiler would report them.

For effective use of this rule, make sure to enable the C++14 standard for the Polyspace® Bug Finder™ analysis. For more information, see C++ standard version (-cpp-version).

Troubleshooting

If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

void AccessMemory() {
    int* ptr = nullptr; // Intentionally creating a null pointer

    __try {  // Noncompliant 
        *ptr = 42; // This line will cause an access violation exception
    }
    __finally {
        // Code here is executed whether an exception occurred or not
        if (AbnormalTermination()) {
            // Code here is executed if the try block threw an exception
        } else {
            // Code here is executed on success
        }
    }
}

This example uses the Microsoft Visual C++ language extensions __try and __finally, which violate the rule. Instead, the standard C++ try-catch mechanism can be used for catching exceptions and the C++ RAII idiom can be used for freeing of resources even in the presence of exceptions.

Check Information

Group: General
Category: Required, Automated

Version History

Introduced in R2019a