title: Why does boost::is_same<int const&, boost::add_const<int &>::value equal false?
body: <p>I'm working through <a href="http://www.informit.com/store/product.aspx?isbn=0321227255" rel="nofollow">"C++ Template Metaprogramming" by Abrahams &amp; Gurtovoy</a>" 
  This isn't actually in chapter two but is something I tried whilst working on the first exercise (2.10, 2.0) which is confusing me:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;boost/type_traits.hpp&gt;
  
  std::string display(bool b)
  {
    return (b ? "true" : "false");
  }
  
  int main()
  {
     using namespace std;
  
     cout &lt;&lt; display(boost::is_same&lt;int const&amp;, boost::add_const&lt;int &amp;&gt;::type &gt;::value) &lt;&lt; "\n";
  
       return 0;
  }
  </code></pre>
  
  <p>The output is 'false'. 
  However if I remove the references, i.e. 'int const' and 'int'. The output is 'true'.</p>