title: Selecting type with mpl::if_ and integer template parameter
body: <p>The following code works on Visual Studio 2005, but gives me a compiler error when compiled with g++ 4.4.5:</p>
  
  <pre><code>#include &lt;boost/mpl/if.hpp&gt;
  #include &lt;boost/mpl/bool.hpp&gt;
  
  template&lt;int X&gt; struct A
  {
      void f() {
          typedef boost::mpl::if_&lt;boost::mpl::bool_&lt;X == 1&gt;, int, bool&gt;::type Type;
      }
  };
  </code></pre>
  
  <p>This is the error I get:</p>
  
  <pre><code>main.cpp: In member function ‘void A&lt;X&gt;::f()’:
  main.cpp:12: error: too few template-parameter-lists
  </code></pre>
  
  <p>What's wrong with the code? If I replace the templated X with a hard coded number, the code compiles just fine. I've also tried wrapping X with a mpl::int_ type but without any success.</p>
  
  <p>Thanks!</p>