Date: Tue, 14 Jun 2016 22:40:39 -0300 From: =?UTF-8?B?T3RhY8OtbGlv?= <otacilio.neto@bsd.com.br> To: Dimitry Andric <dim@FreeBSD.org> Cc: freebsd-hackers@freebsd.org Subject: Re: /usr/include/c++/v1/map:837:5: error: static_assert failed "Allocator::value_type must be same type as value_type" Message-ID: <bea2418d-5e1d-2cac-0500-773c2c9ca0ff@bsd.com.br> In-Reply-To: <F34B797C-7A4A-4110-A457-CE439EEA9715@FreeBSD.org> References: <e4c2cba6-7643-9032-8304-b2fce04c32b6@bsd.com.br> <F34B797C-7A4A-4110-A457-CE439EEA9715@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Em 14/06/2016 18:14, Dimitry Andric escreveu: > On 14 Jun 2016, at 06:05, OtacĂlio <otacilio.neto@bsd.com.br> wrote: >> I'm getting this error when I try compile the ORB-SLAM2 library. Some one can give me a hint about it? >> >> >> /usr/include/c++/v1/map:837:5: error: static_assert failed "Allocator::value_type must be same type as value_type" >> static_assert((is_same<typename allocator_type::value_type, value_type>::value), > Typically, this is because the allocator for std::map must use a const > key, and libc++ now checks for this with a static assertion. > > See for example this fix for www/node: > https://svnweb.freebsd.org/ports/head/www/node/files/patch-deps_v8_src_compiler_instruction.h?view=markup&pathrev=412412 > > -Dimitry > I think that this problem is more difficult that the example. Bellow is the error message: In file included from /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/src/LoopClosing.cc:21: In file included from /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/include/LoopClosing.h:24: In file included from /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/include/KeyFrame.h:24: In file included from /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/include/MapPoint.h:25: In file included from /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/include/Frame.h:27: In file included from /usr/local/include/DBoW2/BowVector.h:14: /usr/include/c++/v1/map:837:5: error: static_assert failed "Allocator::value_type must be same type as value_type" static_assert((is_same<typename allocator_type::value_type, value_type>::value), ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/src/LoopClosing.cc:436:21: note: in instantiation of template class 'std::__1::map<ORB_SLAM2::KeyFrame *, g2o::Sim3, std::__1::less<ORB_SLAM2::KeyFrame *>, Eigen::aligned_allocator<std::__1::pair<const ORB_SLAM2::KeyFrame *, g2o::Sim3> > >' requested here KeyFrameAndPose CorrectedSim3, NonCorrectedSim3; ^ /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/src/LoopClosing.cc:466:29: error: no viable overloaded operator[] for type 'KeyFrameAndPose' (aka 'map<ORB_SLAM2::KeyFrame *, g2o::Sim3, std::less<KeyFrame *>, Eigen::aligned_allocator<std::pair<const KeyFrame *, g2o::Sim3> > >') NonCorrectedSim3[pKFi]=g2oSiw; ~~~~~~~~~~~~~~~~^~~~~ /usr/ports/graphics/orbslam2/work/ORB_SLAM2-132d92f/src/LoopClosing.cc:470:39: error: use of undeclared identifier 'mit'; did you mean 'min'? for(KeyFrameAndPose::iterator mit=CorrectedSim3.begin(), mend=CorrectedSim3.end(); mit!=mend; mit++) ^~~ min /usr/include/c++/v1/algorithm:2562:1: note: 'min' declared here min(const _Tp& __a, const _Tp& __b, _Compare __comp)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bea2418d-5e1d-2cac-0500-773c2c9ca0ff>