Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The standard library introduces the namespace std for standards-provided declarations such as std::stringstd::vector, and std::for_each. However, it is undefined behavior to introduce new declarations in namespace std, except under special circumstances. The C++ Standard, [namespace.std], paragraph 1 & 2, state [ISO/IEC 14882-2014]:

1 The behavior of a C++ program is undefined if it adds declarations or definitions to namespace std or to a namespace within namespace std unless otherwise specified. A program may add a template specialization for any standard library template to namespace std only if the declaration depends on a user-defined type and the specialization meets the standard library requirements for the original template and is not explicitly prohibited.

2 The behavior of a C++ program is undefined if it declares

— an explicit specialization of any member function of a standard library class template, or
— an explicit specialization of any member function template of a standard library class or class template, or
— an explicit or partial specialization of any member class template of a standard library class or class template.

...

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

MSC34-CPP

High

Unlikely

Medium

P6

L2

Automated Detection

Tool

Version

Checker

Description

 PRQA QA-C++

 
Include Page
PRQA QA-C++_V
PRQA QA-C++_V

-q & Name Check

 

Related Vulnerabilities

Search for other vulnerabilities resulting from the violation of this rule on the CERT website.

...