title: c++ error "member function declared with 'override' does not override a base class member"
body: <p>I am learning/testing virtual functions. Below is my test code, and I got the following error and couldn't figure out why:</p>
  
  <p>"member function declared with "override" does not override a base class member 
  bool is_satified(Product* item) override{return item->color == color;}"</p>
  
  <p>In specification, I have already defined "is_satisfied" as virtual. Could someone point out what is wrong here? Thanks!</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include&lt;vector&gt;
  #include&lt;iostream&gt;
  
  using namespace std;
  
  enum class Color {red, green, blue};
  enum class Size {small, medium, large};
  
  struct Product{
      string name;
      Color color;
      Size size;
  };
  
  template &lt;typename T&gt; struct Specification{
      virtual bool is_satisfied(T* item) = 0;
  };
  
  struct ColorSpecification: Specification&lt;Product&gt;{
      Color color;
      explicit ColorSpecification(const Color color): color{color} {}
      bool is_satified(Product* item) override{return item-&gt;color == color;}
  };
  
  int main(){
  ColorSpecification green(Color::green);
  }
  </code></pre>