Registered Member
|
Hi everybody,
I have compilation error with this code on 3.3.0 :
It was working on 3.2.10. Is there a new way to do this ? Thanks a lot. David |
Moderator
|
This works for me (using clang, gcc, or icc):
|
Registered Member
|
Thanks a lot for the quick answer.
Sorry but I didn't specified that we are working on Microsoft Visual Studio 2013. |
Moderator
|
oh, so that's a visual issue. Could you past the complete error message, thanks.
|
Registered Member
|
Below the error in Visual :
d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2993: 'bool (traits<Derived>::match<Derived>::ScalarTypeMatch)' : type non conforme pour le paramètre de modèle sans type 'Condition' 1> with 1> [ 1> Derived=Eigen::Ref<const Eigen::Matrix<double,-1,1,0,4096,1>,0,Eigen::InnerStride<1>> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(186) : voir la référence à l'instanciation de la classe modèle 'Eigen::Ref<const Eigen::Matrix<double,-1,1,0,4096,1>,0,Eigen::InnerStride<1>>' en cours de compilation 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(158) : lors de la compilation de la fonction membre 'double Eigen::MatrixBase<Derived>::stableNorm(void) const' de la classe modèle 1> with 1> [ 1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(176) : voir la référence à l'instanciation de la fonction modèle 'double Eigen::MatrixBase<Derived>::stableNorm(void) const' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/MapBase.h(39) : voir la référence à l'instanciation de la classe modèle 'Eigen::MatrixBase<Derived>' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(331) : voir la référence à l'instanciation de la classe modèle 'Eigen::MapBase<Eigen::Block<const Derived,3,1,false>,0>' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,4,1,0,4,1> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(156) : voir la référence à l'instanciation de la classe modèle 'Eigen::internal::BlockImpl_dense<XprType,3,1,false,true>' en cours de compilation 1> with 1> [ 1> XprType=Eigen::Matrix<double,4,1,0,4,1> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(105) : voir la référence à l'instanciation de la classe modèle 'Eigen::BlockImpl<XprType,3,1,false,Eigen::internal::traits<Eigen::Matrix<double,4,1,0,4,1>>::StorageKind>' en cours de compilation 1> with 1> [ 1> XprType=Eigen::Matrix<double,4,1,0,4,1> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/VectorBlock.h(60) : voir la référence à l'instanciation de la classe modèle 'Eigen::Block<const Derived,3,1,false>' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,4,1,0,4,1> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(174) : voir la référence à l'instanciation de la classe modèle 'Eigen::VectorBlock<const Eigen::Matrix<double,4,1,0,4,1>,3>' en cours de compilation 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(201) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Eigen::Quaternion<double,0>>(const Eigen::QuaternionBase<Eigen::Quaternion<double,0>> &)' en cours de compilation 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(201) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Eigen::Quaternion<double,0>>(const Eigen::QuaternionBase<Eigen::Quaternion<double,0>> &)' en cours de compilation 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(88) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,3,3,0,3,3> 1> ] 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(88) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,3,3,0,3,3> 1> ] 1> D:\Dev\Sgv3dStation\Sgv3dStation\trunk\Sources\Projects\Sgv3dStation\Sources\App\main.cpp(7) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double>::AngleAxis<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,3,3,0,3,3> 1> ] 1> D:\Dev\Sgv3dStation\Sgv3dStation\trunk\Sources\Projects\Sgv3dStation\Sources\App\main.cpp(7) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double>::AngleAxis<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation 1> with 1> [ 1> Derived=Eigen::Matrix<double,3,3,0,3,3> 1> ] 1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2039: 'type' : n'est pas membre de 'Eigen::internal::enable_if' 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/util/Meta.h(162) : voir la déclaration de 'Eigen::internal::enable_if' 1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/util/Meta.h(162) : voir la déclaration de 'Eigen::internal::enable_if' 1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2143: erreur de syntaxe : absence de ',' avant '*' 1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut 1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(186): error C2440: '<function-style-cast>' : impossible de convertir de 'const Eigen::VectorBlock<const Derived,-1>' en 'SegmentWrapper' 1> with 1> [ 1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false> 1> ] 1> Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë |
Registered Member
|
Do you think that I need to register this compilation bug in the bug tracking ?
Thanks ! |
Moderator
|
I cannot reproduce even with MSVC 2013 using the self-contained example I posted above. Please provide a self-contained exemple so that we can reproduce and perhaps find a workaround.
|
Registered Member
|
Hi,
I just create a C++ console application in Visual 2013 ( release 12.0.30501.00 Update 2) and complete as :
Thanks for the help. |
Moderator
|
I guess the problem comes from what you have in your stdafx header. What if you remove it?
|
Registered Member
|
Same problem if I remove stdafx header.
I join the zip project to a wetransfer : https://we.tl/VvTaaUyosE Thanks. |
Moderator
|
Still works fine for me. Using MSVC 2013 update 5, Eigen 3.3.1.
|
Registered Member
|
With the update 5 it works fine !!
Thanks a lot for the help !!! |
Registered users: Bing [Bot], Google [Bot], Sogou [Bot]