title: What are the storage classes in D?
body: <p>Up until now I was under the impression that things like <code>immutable</code> and <code>const</code> were storage classes.  In a recent <a href="http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/The-D-Programming-Language" rel="noreferrer">video (at around 11:55)</a> Walter Bright states that <code>immutable</code> is not a storage class, but rather it's a type constructor.  In the <a href="http://dlang.org/declaration.html" rel="noreferrer">official documentation</a>, <code>immutable</code>, <code>const</code>, and among many other keywords, are listed as being storage classes:</p>
  
  <pre><code>StorageClass:
  abstract
  auto
  const
  deprecated
  enum
  extern
  final
  immutable
  inout
  shared
  nothrow
  override
  pure
  __gshared
  Property
  scope
  static
  synchronized
  </code></pre>
  
  <p>Is this list wrong? Some of it doesn't make sense(e.g., deprecated, override).</p>
  
  <p>I know <code>static</code> and <code>ref</code> are storage classes, but what's the rest?  And which one of the keywords in D are type constructors?</p>