title: typedef declaration syntax
body: <p>Some days ago I looked at boost sources and found interesting <strong>typedef</strong>.</p>
  
  <p>There is a code from "boost\detail\none_t.hpp":</p>
  
  <pre><code>namespace boost {
  
  namespace detail {
  
  struct none_helper{};
  
  typedef int none_helper::*none_t ;
  
  } // namespace detail
  
  } // namespace boost
  </code></pre>
  
  <p>I didn't see syntax like that earlier and can't explain the sense of that.</p>
  
  <p>This <strong>typedef</strong> introduces name "none_t" as pointer to int in boost::detail namespace.</p>
  
  <p>What the syntax is?</p>
  
  <p>And what difference between "<strong>typedef int none_helper::*none_t</strong>" and for example "<strong>typedef int *none_t</strong>" ?</p>