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 ¢er, 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 ¢er, 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> &,