Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

ICC Compilation Error on Windows for PointCloudLibrary

Robbie_L_
Beginner
443 Views

I am using Intel Compiler 15.0 update 1 to compile the PCL(PointCouldLibrary 1.7.2, https://github.com/PointCloudLibrary/pcl)

Using VS2013 default compiler toolset, no issue with compilation.

When I switch to intel compiler, I got such a compilation error.

pcl-1.7.2\features\include\pcl/features/impl/board.hpp(131): error : declaration is incompatible with "void pcl::BOARDLocalReferenceFrameEstimation<PointInT, PointNT, PointOutT>::planeFitting(const Eigen::Matrix<float, Eigen::Dynamic, 3, <expression>, Eigen::Dynamic, 3> &, Eigen::Vector3f &, Eigen::Vector3f &)" (declared at line 301 of "pcl-1.7.2\features\include\pcl/features/board.h")
1>    pcl::BOARDLocalReferenceFrameEstimation<PointInT, PointNT, PointOutT>::planeFitting (
1>  

Please notice the bolden text.

The declaration of this planeFitting function in board.h

template<typename PointInT, typename PointNT, typename PointOutT = ReferenceFrame>
  class BOARDLocalReferenceFrameEstimation : public FeatureFromNormals<PointInT, PointNT, PointOutT>
  {
    public:
void planeFitting (Eigen::Matrix<float, Eigen::Dynamic, 3> const &points, Eigen::Vector3f &center,
                    Eigen::Vector3f &norm);

};


The implementation in board.hpp

template<typename PointInT, typename PointNT, typename PointOutT> void
pcl::BOARDLocalReferenceFrameEstimation<PointInT, PointNT, PointOutT>::planeFitting (
                                                                                     Eigen::Matrix<float,
                                                                                         Eigen::Dynamic, 3> const &points,
                                                                                     Eigen::Vector3f &center,
                                                                                     Eigen::Vector3f &norm)
{
 ......
}

I don't know why intel compiler wrongly expanded the first parameter of this function.

Eigen::Matrix<float, Eigen::Dynamic, 3> const &points to const Eigen::Matrix<float, Eigen::Dynamic, 3, <expression>, Eigen::Dynamic, 3> &,

0 Kudos
4 Replies
JenniferJ
Moderator
443 Views

Would it be possible for you to get a preprocessed .i file for this file "impl/board.hpp(131)" by adding "/EP /P"? It would save us time to duplicate the issue.

Thanks,

Jennifer

0 Kudos
Robbie_L_
Beginner
443 Views

I have attached the compressed board.i, please check.

Thanks.

 

0 Kudos
Middleton__Matt
Beginner
443 Views

Any progress on this issue?  I'm having the same problem in addition to a few other problems compiling tpcl::registration::TransformationEstimationSVD<PointSource, PointTarget, Scalar>::getTransformationFromCorrelation.  I have compiled PCL many times on VC2010, 2013, and Clang, but can't quite get there on intel yet.

0 Kudos
Judith_W_Intel
Employee
443 Views

 

I suspect that this is the same as our DPD200368856 which was a regression introduced on 8/6/2014 and fixed on 5/27/2015.

See description below. What was the build date for 15.0 update 1?

5/18/15 
Spurious error on out-of-class-template member definition in Microsoft mode

In Microsoft mode, the front end sometimes issued a spurious error on a member
function definition appearing outside its parent class template definition if
the return type or a parameter of the member function involves a nontype
template argument expressed using a constant-valued variable.  For example:

  int const K = 0xfff;
  template<typename T> struct D {
    template<int> struct N { typedef int Type; };
    typename D::template N<K>::Type f();            // (d)
  };
  template<typename T>
  typename D<T>::template N<K>::Type D<T>::f() {    // (D)
    return 3;
  }

Previously, in Microsoft mode, the front end failed to connect definition (D)
with declaration (d), and that triggered a spurious error.  This is now fixed.
 

If this is the same issue then 15.0 Update 4 should be available shortly and contain a fix for this regression. Sorry for the inconvenience.


Judy

0 Kudos
Reply