title: Template partial specialization on bool
body: <p>That's a really basic question I think, but I was'nt able to find an answer, even on StackOverflow. So sorry if you want to hit me when you'll read this.</p>
  
  <p>I just want to do a partial specialization on bool value :</p>
  
  <pre><code>template &lt; typename Object, bool Shared = false &gt;
  class Foo {
  
    void bar();
  };
  
  template &lt; typename Object &gt;
  void  Foo&lt;Object, true&gt;::bar() {}
  
  template &lt; typename Object &gt;
  void  Foo&lt;Object, false&gt;::bar() {}
  
  int main() {
  
    Foo&lt;int&gt; test;
    return 0;
  }
  </code></pre>
  
  <p>I think the idea is correct, but I'm missing something with this code (probably really stupid) :</p>
  
  <pre><code>Test3.cpp:8:30: error: invalid use of incomplete type ‘class Foo&lt;Object, true&gt;’
   void  Foo&lt;Object, true&gt;::bar() {
                                ^
  Test3.cpp:2:7: note: declaration of ‘class Foo&lt;Object, true&gt;’
   class Foo {
         ^~~
  Test3.cpp:13:31: error: invalid use of incomplete type ‘class Foo&lt;Object, false&gt;’
   void  Foo&lt;Object, false&gt;::bar() {
                                 ^
  Test3.cpp:2:7: note: declaration of ‘class Foo&lt;Object, false&gt;’
   class Foo {
  </code></pre>