title: Creating an instance of templated abstract class
body: <p>I would like to instantiate a templated abstract class, like the following one:</p>
  
  <pre><code>template &lt;class T&gt;
  class non_sense {
  public:
      void virtual nonsesnse_func() = 0;
  };
  </code></pre>
  
  <p>to make an integer instance of this class I tried the following:</p>
  
  <pre><code>void non_sense&lt;int&gt;::nonsesnse_func(){
  }
  </code></pre>
  
  <p>and then I make my instance in main :</p>
  
  <pre><code>non_sense&lt;int&gt; xx;
  </code></pre>
  
  <p>so the whole program is as follow:</p>
  
  <pre><code>template &lt;class T&gt;
  class non_sense {
  public:
      void virtual nonsesnse_func() = 0;
  };
  
  void non_sense&lt;int&gt;::nonsesnse_func(){
  }
  
  void main(){
      non_sense&lt;int&gt; xx;
  }
  </code></pre>
  
  <p>It totally make sense to me, the compiler doesn't accept it though, saying the class is abstract.  I don't want to take the route of creating a new class inheriting from this class using a specific template, regarding the big application I am trying to make this will be massive writting. Can somebody explain to me why the compiler rejects this, and is there any way arround this apart from creating a new class for the specific instance I want.</p>