title: standards compliant way to typedef my enums
body: <p>How can I get rid of the warning, without explicitly scoping the enum properly? The standards-compliant code would be to compare against <code>foo::bar::mUpload</code> (see <a href="https://stackoverflow.com/questions/514194/using-enum-inside-types-compiler-warning-c4482-c">here</a>), but the explicit scopes are really long and make the darn thing unreadable.</p>
  
  <p>maybe there's another way that doesn't use typedef? i don't want to modify the enum--i didn't write it and its in use elsewhere.</p>
  
  <p><code>warning C4482: nonstandard extension used: enum 'foo::bar::baz' used in qualified name</code></p>
  
  <pre><code>namespace foo { 
  class bar { 
  enum baz {mUpload = 0, mDownload};
  }
  }
  
  typedef foo::bar::baz mode_t;
  mode_t mode = getMode(); 
  
  if (mode == mode_t::mUpload) //C4482
  {
   return uploadthingy();
  }
  else 
  {
   assert(mode == mode_t::mDownload); //C4482
   return downloadthingy();
  }
  </code></pre>