title: Boost compilation error in policy.hpp
body: <p>For my project, I am trying to upgrade the boost library from 1.39 to 1.58.</p>
  
  <p>While compiling, I get these errors:</p>
  
  <blockquote>
    <p>home/kunehah/third_party/boost_1_58/prefix/include/boost/math/policies/policy.hpp:708:17: error: expected identifier before 'double'
    /home/kunehah/third_party/boost_1_58/prefix/include/boost/math/policies/policy.hpp:708:17: error: two or more data types in declaration of 'parameter'
    /home/kunehah/third_party/boost_1_58/prefix/include/boost/math/policies/policy.hpp:709:8: error: no default argument for 'Policy'
    /home/kunehah/third_party/boost_1_58/prefix/include/boost/math/policies/policy.hpp:715:32: error: type/value mismatch at argument 1 in template parameter list for 'template&lt;, class Policy> struct boost::math::policies::evaluation'
    /home/kunehah/third_party/boost_1_58/prefix/include/boost/math/policies/policy.hpp:715:32: error:   expected a constant of type '', got 'float'</p>
  </blockquote>
  
  <p>And my <code>policy.hpp</code> file is below:</p>
  
  <pre><code>//
  // Traits class to handle internal promotion:
  //
  template &lt;class Real, class Policy&gt;//**line 708**
  struct evaluation
  {
     typedef Real type;
  };
  
  template &lt;class Policy&gt;
  struct evaluation&lt;float, Policy&gt;//line 715**
  {
     typedef typename mpl::if_&lt;typename Policy::promote_float_type, double, float&gt;::type type;
  };
  
  template &lt;class Policy&gt;
  struct evaluation&lt;double, Policy&gt;
  {
     typedef typename mpl::if_&lt;typename Policy::promote_double_type, long double, double&gt;::type type;
  };
  
  #ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
  
  template &lt;class Real&gt;
  struct basic_digits : public mpl::int_&lt;0&gt;{ };
  template &lt;&gt;
  struct basic_digits&lt;float&gt; : public mpl::int_&lt;FLT_MANT_DIG&gt;{ };
  template &lt;&gt;
  struct basic_digits&lt;double&gt; : public mpl::int_&lt;DBL_MANT_DIG&gt;{ };
  template &lt;&gt;
  struct basic_digits&lt;long double&gt; : public mpl::int_&lt;LDBL_MANT_DIG&gt;{ };
  </code></pre>
  
  <p>Kindly help me in understanding these errors.</p>