title: Function mismatch between vectors with identical stored types
body: <p>I have define a template function called <code>"Create2DBBox"</code> just for create bounding boxes from a point cloud vector, the implementation details are less important. </p>
  
  <p>I want to use the template <code>PointT</code> type for accepting different Point type such as <code>PointXYZ</code> or `PointXYZI', the problem is when I define the function like below:
  ```</p>
  
  <pre><code>template&lt;typename PointT&gt;
  std::vector&lt;BBox2D&gt; Create2DBBox(const std::shared_ptr&lt;std::vector&lt;pcl::PointCloud&lt;PointT&gt;, Eigen::aligned_allocator&lt;pcl::PointCloud&lt;PointT&gt; &gt;&gt;&gt; cloudVecIn, const Eigen::MatrixXf&amp; projectMatrix, const cv::Size&amp; imageSize)
  {
    std::vector&lt;BBox2D&gt; bbox_vec_res;
    for(int i = 0; i &lt; cloudVecIn-&gt;size(); ++i) {
      BBox2D bbox((*cloudVecIn)[i], projectMatrix, imageSize);
      bbox_vec_res.push_back(bbox);
    }
    return bbox_vec_res;
  }
  </code></pre>
  
  <p>When I use this function as below:</p>
  
  <pre><code> std::shared_ptr&lt;std::vector&lt;pcl::PointCloud&lt;pcl::PointXYZI&gt;&gt;&gt; clustered_vec = ogm_detector_.get_clustered_cloud_vec();
   vector&lt;BBox2D&gt; bbox_vec = sensors_fusion::Create2DBBox(clustered_vec, this-&gt;transform_matrix_, Size(this-&gt;image_raw_.cols, image_raw_.rows));
  </code></pre>
  
  <p>I get the error:</p>
  
  <pre><code>error: no matching function for call to ‘Create2DBBox(std::shared_ptr&lt;std::vector&lt;pcl::PointCloud&lt;pcl::PointXYZI&gt; &gt; &gt;&amp;, Eigen::MatrixXf&amp;, cv::Size)’
   D&gt; bbox_vec = sensors_fusion::Create2DBBox(clustered_vec, this-&gt;transform_matrix_, Size(this-&gt;image_raw_.cols, image_raw_.rows));
  </code></pre>
  
  <p>I don't know, and I guess it must be the fisrt template argument cause. Thanks for any help.</p>