Re: [eigen] compiler error C2516 for EIGEN_WORKAROUND_MSVC_STL_SUPPORT in details.h

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hauke, thanks a _lot_ for fixing this so fast!

Are we getting closer to a releasable beta3? :)

Btw, while testing the latest snapshot, it seems that this code (provided by Gael some months ago) is no longer compiling:

https://code.ros.org/svn/ros-pkg/stacks/perception_pcl/trunk/pcl/include/pcl/common/eigen.h

ei_sqrt, ei_cos, ei_sin, etc... do not longer exist.

Have they been renamed to something else or are we doing something wrong?

[Edit: it looks like they might have been renamed to sqrt/cos/sin - is that correct? If so, we definitely need a beta3 out soon :)]

Thanks,
Radu.


On 12/02/2010 03:43 AM, Hauke Heibel wrote:
Hi Stefan,

thanks for the test-program. I pushed a fix which hopefully works. ;)

The issue was that for std::vector<T>  we tried at some point to derive
from T which works only if T is a class whereas you used a "float". I
agree that this should compile and work but initially the std::vector
workaround was intended for Eigen-types only.

A last comment on the fix which is primarily aimed at Benoit and Gael.
Currently I am assuming that if  "!internal::is_arithmetic<T>::value"
is exactly than true when "std::is_calss<T>::value" is true. I am not
sure whether this is actually correct but I am also a bit at a loss of
how to implement "is_class". The STL code here is so cryptic for that
traits helper and contains so many defines that I quit looking after
some time. Maybe you guys have an opinion whether we can live for the
moment with my hack or whether we should do something else.

- Hauke


On Wed, Dec 1, 2010 at 2:32 AM, Stefan Holzer<holzers@xxxxxxxxxxxxxxxx>  wrote:
Hi,

I'm trying to port some code (http://www.ros.org/wiki/pcl) from Linux to
Windows (Win7 x64 with Visual Studio 2010, compiling for 32-bit). This works
fine except for a compiler error I get in Eigen/src/StlSupport/details.h in
line 71:

error C2516: 'T' is not a legal base class

which occurs for the vector:

std::vector<float, Eigen::aligned_allocator<float>  >  values;

According to the comments in this file this piece of code is specially
written for Visual Studio. Since the code works fine in Linux there might be
something wrong with this VS-specific code. I also tested it with Visual
Studio 2008 and it gives the same error.

I would be happy about any suggestions.

Thanks,
Stefan









Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/