title: Call methods on class templatized over enum
body: <p>Given the following code:</p>
  
  <pre><code>enum Fruits{ eApple, eBanana };
  
  template&lt;&gt;
  struct SomeFruit&lt; eApple &gt; {
      void eatIt() { // eat an apple };
  };
  
  template&lt;&gt;
  struct SomeFruit&lt; eBanana &gt; {
      void eatIt() { // eat a banana };
  };
  </code></pre>
  
  <p>Is there a way to call the explicitly specialized <code>eatIt()</code>, for each of <code>Fruits</code>, without having to make each call manually?</p>
  
  <p>My definition of "make each call manually" would be:</p>
  
  <pre><code>void eatAllFruits()
  {
      SomeFruit&lt; eApple &gt; apple;   
      apple.eatIt(); 
      SomeFruit&lt; eBanana &gt; banana; 
      banana.eatIt(); 
  }
  </code></pre>
  
  <p>Clearly with this method one has to extend <code>eatAllFruits</code> everytime <code>Fruits</code> is modified.</p>