Eigen::MatrixXf 的 boost::lockfree 队列

mku*_*use 0 c++ boost eigen eigen3

我正在尝试创建boost::lockfree::queue以下示例: http://www.boost.org/doc/libs/1_54_0/doc/html/lockfree/examples.html

\n\n

我可以成功地为 int (整数数据类型)创建它。但是,我很难为 Eigen::MatrixXf 创建队列。队列声明于SolveDGEM.h

\n\n
boost::lockfree::queue<Eigen::MatrixXf> q_cam0;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到以下我无法理解的编译器错误

\n\n
In file included from /home/eeuser/ros_workspaces/HeloRosProject/src/visensor_dgem/include/SolveDGEM.h:38:0,\n                 from /home/eeuser/ros_workspaces/HeloRosProject/src/visensor_dgem/src/dgem.cpp:4:\n/usr/local/include/boost/lockfree/queue.hpp: In instantiation of \xe2\x80\x98boost::lockfree::queue<Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >\xe2\x80\x99:\n/home/eeuser/ros_workspaces/HeloRosProject/src/visensor_dgem/include/SolveDGEM.h:76:45:   instantiated from here\n/usr/local/include/boost/lockfree/queue.hpp:86:1: error: invalid application of \xe2\x80\x98sizeof\xe2\x80\x99 to incomplete type \xe2\x80\x98boost::STATIC_ASSERTION_FAILURE<false>\xe2\x80\x99 \n/usr/local/include/boost/lockfree/queue.hpp: In instantiation of \xe2\x80\x98boost::lockfree::queue<Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >\xe2\x80\x99:\n/home/eeuser/ros_workspaces/HeloRosProject/src/visensor_dgem/include/SolveDGEM.h:76:45:   instantiated from here\n/usr/local/include/boost/lockfree/queue.hpp:90:1: error: invalid application of \xe2\x80\x98sizeof\xe2\x80\x99 to incomplete type \xe2\x80\x98boost::STATIC_ASSERTION_FAILURE<false>\xe2\x80\x99 \n
Run Code Online (Sandbox Code Playgroud)\n

Mic*_*ein 5

请参阅http://www.boost.org/doc/libs/1_59_0/doc/html/boost/lockfree/queue.html

T 必须有一个简单的析构函数

这对于 来说是不正确的Eigen::MatrixXf