Skip to content

OpenCV and Eigen Scalar declarations overlap #21377

@h6197627

Description

@h6197627

While compiling OpenCV 4.5.5 with Visul Studio 2019 and Eigen support I get couple of warnings like this (all comes with "compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp"):

28>C:\Libs\Eigen\include\eigen3\Eigen\src/Jacobi/Jacobi.h(455,1): warning C4459: declaration of 'Scalar' hides global declaration (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Users\Administrator\Downloads\opencv-4.5.5\modules\core\include\opencv2/core/types.hpp(691,25): message : see declaration of 'cv::Scalar' (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Jacobi/Jacobi.h(299): message : see reference to function template instantiation 'void Eigen::internal::apply_rotation_in_the_plane<Derived,Derived,std::complex<double>>(Eigen::DenseBase<Derived> &,Eigen::DenseBase<Derived> &,const Eigen::JacobiRotation<std::complex<double>> &)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,-1,true>,1,-1,false>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(437): message : see reference to function template instantiation 'void Eigen::MatrixBase<Derived>::applyOnTheLeft<std::complex<double>>(Eigen::EigenBase<Derived>::Index,Eigen::EigenBase<Derived>::Index,const Eigen::JacobiRotation<std::complex<double>> &)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,-1,true>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(437): message : see reference to function template instantiation 'void Eigen::MatrixBase<Derived>::applyOnTheLeft<std::complex<double>>(Eigen::EigenBase<Derived>::Index,Eigen::EigenBase<Derived>::Index,const Eigen::JacobiRotation<std::complex<double>> &)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,-1,true>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(391): message : while compiling class template member function 'void Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::reduceToTriangularForm(bool)' (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(349): message : see reference to function template instantiation 'void Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::reduceToTriangularForm(bool)' being compiled (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(338): message : see reference to function template instantiation 'Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>> &Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::computeFromHessenberg<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>(const HessMatrixType &,const OrthMatrixType &,bool)' being compiled
28>        with
28>        [
28>            HessMatrixType=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,
28>            OrthMatrixType=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexSchur.h(338): message : see reference to function template instantiation 'Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>> &Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::computeFromHessenberg<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>(const HessMatrixType &,const OrthMatrixType &,bool)' being compiled
28>        with
28>        [
28>            HessMatrixType=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,
28>            OrthMatrixType=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(270): message : see reference to function template instantiation 'Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>> &Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::compute<Derived>(const Eigen::EigenBase<Derived> &,bool)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(270): message : see reference to function template instantiation 'Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>> &Eigen::ComplexSchur<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>>::compute<Derived>(const Eigen::EigenBase<Derived> &,bool)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp(289): message : see reference to function template instantiation 'Eigen::ComplexEigenSolver<Eigen::MatrixXcd> &Eigen::ComplexEigenSolver<Eigen::MatrixXcd>::compute<Derived>(const Eigen::EigenBase<Derived> &,bool)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ]
28>C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp(289): message : see reference to function template instantiation 'Eigen::ComplexEigenSolver<Eigen::MatrixXcd> &Eigen::ComplexEigenSolver<Eigen::MatrixXcd>::compute<Derived>(const Eigen::EigenBase<Derived> &,bool)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>
28>        ]
28>homography_solver.cpp
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(421,1): warning C4459: declaration of 'Scalar' hides global declaration (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Users\Administrator\Downloads\opencv-4.5.5\modules\core\include\opencv2/core/types.hpp(691,25): message : see declaration of 'cv::Scalar' (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(419): message : while compiling class template member function 'void Eigen::internal::dense_assignment_loop<Kernel,3,0>::run(Kernel &)'
28>        with
28>        [
28>            Kernel=Kernel
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(785): message : see reference to function template instantiation 'void Eigen::internal::dense_assignment_loop<Kernel,3,0>::run(Kernel &)' being compiled
28>        with
28>        [
28>            Kernel=Kernel
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(785): message : see reference to class template instantiation 'Eigen::internal::dense_assignment_loop<Kernel,3,0>' being compiled (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(954): message : see reference to function template instantiation 'void Eigen::internal::call_dense_assignment_loop<DstXprType,SrcXprType,Functor>(DstXprType &,const SrcXprType &,const Functor &)' being compiled
28>        with
28>        [
28>            DstXprType=ActualDstTypeCleaned,
28>            SrcXprType=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Functor=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(949): message : while compiling class template member function 'void Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,void>::run(DstXprType &,const SrcXprType &,const Functor &)'
28>        with
28>        [
28>            Src=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Func=Eigen::internal::swap_assign_op<std::complex<double>>,
28>            DstXprType=ActualDstTypeCleaned,
28>            SrcXprType=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Functor=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(890): message : see reference to function template instantiation 'void Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,void>::run(DstXprType &,const SrcXprType &,const Functor &)' being compiled
28>        with
28>        [
28>            Src=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Func=Eigen::internal::swap_assign_op<std::complex<double>>,
28>            DstXprType=ActualDstTypeCleaned,
28>            SrcXprType=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Functor=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(890): message : see reference to class template instantiation 'Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,void>' being compiled
28>        with
28>        [
28>            Src=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Func=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/AssignEvaluator.h(858): message : see reference to function template instantiation 'void Eigen::internal::call_assignment_no_alias<Dst,Src,Func>(Dst &,const Src &,const Func &)' being compiled
28>        with
28>        [
28>            Dst=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Src=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Func=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Core/DenseBase.h(424): message : see reference to function template instantiation 'void Eigen::internal::call_assignment<Derived,Derived,Eigen::internal::swap_assign_op<std::complex<double>>>(Dst &,const Src &,const Func &,void *)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Dst=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Src=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>,
28>            Func=Eigen::internal::swap_assign_op<std::complex<double>>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(339): message : see reference to function template instantiation 'void Eigen::DenseBase<Derived>::swap<Derived>(const Eigen::DenseBase<Derived> &)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(339): message : see reference to function template instantiation 'void Eigen::DenseBase<Derived>::swap<Derived>(const Eigen::DenseBase<Derived> &)' being compiled
28>        with
28>        [
28>            Derived=Eigen::Block<Eigen::Matrix<std::complex<double>,-1,-1,0,-1,-1>,-1,1,true>
28>        ] (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(328): message : while compiling class template member function 'void Eigen::ComplexEigenSolver<Eigen::MatrixXcd>::sortEigenvalues(bool)' (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)
28>C:\Libs\Eigen\include\eigen3\Eigen\src/Eigenvalues/ComplexEigenSolver.h(277): message : see reference to function template instantiation 'void Eigen::ComplexEigenSolver<Eigen::MatrixXcd>::sortEigenvalues(bool)' being compiled (compiling source file C:\Users\Administrator\Downloads\opencv-4.5.5\modules\calib3d\src\dls.cpp)

I am wondering is it benign or something might silently fail in runtime in future?

System information (version)
  • OpenCV => 4.5.5
  • Operating System / Platform => Windows 64 Bit
  • Compiler => Visual Studio 2019
  • Eigen: 3.4.0
Steps to reproduce

Build OpenCV with Eigen support on Windows platform with Visual Studio 2019

Issue submission checklist
  • I report the issue, it's not a question
    technically it is a question, but even if it is benign it would be nice to fix this warning
  • I checked the problem with documentation, FAQ, open issues,
    forum.opencv.org, Stack Overflow, etc and have not found solution
  • I updated to latest OpenCV version and the issue is still there

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions