The {cpp} specification forbids the qualification of reference types with ``++const++`` or ``++volatile++`` unless it happens via a ``++typedef++``, in which case it's ignored. Most compilers treat such direct qualifications as errors, but the Microsoft compiler allows them. 


This rule raises an issue on both types of ``++const++`` qualification.


== Noncompliant Code Example

----
void example(char c) {
  char & const direct = c; // Noncompliant

  typedef char & T;
  const T indirect = c; // Noncompliant
}
----


== Compliant Solution

----
void example(char c) {
  char & direct = c; // or: const char & direct = c;

  typedef char & T;
  T indirect = c;
}
----


== See

* https://www.securecoding.cert.org/confluence/display/cplusplus/DCL52-CPP.+Never+qualify+a+reference+type+with+const+or+volatile[CERT, DCL52-CPP.] - Never qualify a reference type with const or volatile

