title: X is not a class template
body: <p>I am trying to compile the below code, and I am getting the error as </p>
  
  <blockquote>
    <p>"error: ‘MD5Sum’ is not a class template<br>
    template&lt;> struct MD5Sum&lt;::cv_bridge::CvImage>"</p>
  </blockquote>
  
  <pre><code>template&lt;&gt; struct MD5Sum&lt;::cv_bridge::CvImage&gt;
  {
    static const char* value() { return MD5Sum&lt;::sensor_msgs::msg::Image&gt;::value(); }
    static const char* value(const ::cv_bridge::CvImage&amp;) { return value(); }
  
    static const uint64_t static_value1 = MD5Sum&lt;::sensor_msgs::msg::Image&gt;::static_value1;
    static const uint64_t static_value2 = MD5Sum&lt;::sensor_msgs::msg::Image&gt;::static_value2;
  
    // If the definition of sensor_msgs/Image changes, we'll get a compile error here.
    ROS_STATIC_ASSERT(MD5Sum&lt;::sensor_msgs::msg::Image&gt;::static_value1 == 0x060021388200f6f0ULL);
    ROS_STATIC_ASSERT(MD5Sum&lt;::sensor_msgs::msg::Image&gt;::static_value2 == 0xf447d0fcd9c64743ULL);
  };
  </code></pre>
  
  <p>This seems to be template specialization. Does it means that template class should be present first before make template specialization out of it.</p>