CV-qualified base classes in C++
<p>While refactoring some C++11 code, I stumbled upon a strange thing. Namely, it seems to be impossible to define a CV-qualified (<code>const</code>, <code>volatile</code> or <code>const volatile</code>) base class, e.g:</p>

<pre><code>struct A { int a = 0; };
struct B: A const {}; // Error here with Clang and GCC!
</code></pre>

<p>However, the following compiles without errors:</p>

<pre><code>struct A { int a = 0; };
using AC = A const;
struct B: AC {};      // NO ERROR HERE!? Qualifiers are ignored.
int main() {
  B b;
  b.a = 42;           // NO ERROR modifying a field of const base.
  return b.a;
}
</code></pre>

<p>I have two questions:</p>

<ol>
<li>What in the C++ standards prohibits defining a CV-qualified base class, if at all?</li>
<li>Why does the second example compile?</li>
</ol>

<p>PS: Since this is a <kbd>language-lawyer</kbd> question, please provide references to the C++ standard.</p>