/usr/include/c++/v1/map:837:5: error: static_assert failed "Allocator::value_type must be same type as value_type"

Otacílio otacilio.neto at bsd.com.br
Wed Jun 15 01:40:55 UTC 2016


Em 14/06/2016 18:14, Dimitry Andric escreveu:
> On 14 Jun 2016, at 06:05, Otacílio <otacilio.neto at 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)



More information about the freebsd-hackers mailing list