title: Best practice for dealing with objects declared in scope of multiple namespaces
body: <p>So for whatever reason if you have some object declared within several nested namespaces, and you need to use it in a function outside of those namespaces, what is the best practice for dealing with the excess noise?</p>
  
  <p>Is it acceptable to refactor something like:</p>
  
  <pre><code>void doWidgetThings
  {
      NamespaceA::NamespaceB::NamespaceC::Widget widget1;
      NamespaceA::NamespaceB::NamespaceC::Widget widget2;
      //...
  }
  </code></pre>
  
  <p>To:</p>
  
  <pre><code>void doWidgetThings
  {
      typedef NamespaceA::NamespaceB::NamespaceC::Widget  Widget;
  
      Widget widget1;
      Widget widget2;
      //...
  }
  </code></pre>
  
  <p>Or is there a better way?</p>