Hello, I have the following code:
bool PinManager::insertPin(const std::string& p_pinNumber, const std::string& p_mode) { boost::shared_ptr<GPIOPin> pin(new GPIOPin(p_pinNumber, p_mode)); if (pin) { m_pinsInUse.insert(std::make_pair<std::string, boost::shared_ptr<GPIOPin> >(p_pinNumber, pin)); return true; } return false; }
This code is always compiled, but when I added the -std=c++0x flag, this code does not compile with the message:
[ 42%] Building CXX object gpioaccess/CMakeFiles/gpioaccess.dir/pinmanager/pinmanager.cpp.o /home/pi/robot_2.0/trunk/gpioaccess/pinmanager/pinmanager.cpp: In member function 'bool gpioaccess::PinManager::insertPin(const string&, const string&)': /home/pi/robot_2.0/trunk/gpioaccess/pinmanager/pinmanager.cpp:39:101: error: no matching function for call to 'make_pair(const string&, boost::shared_ptr<gpioaccess::GPIOPin>&)' /home/pi/robot_2.0/trunk/gpioaccess/pinmanager/pinmanager.cpp:39:101: note: candidate is: /usr/include/c++/4.6/bits/stl_pair.h:262:5: note: template<class _T1, class _T2> std::pair<typename std::__decay_and_strip<_T1>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&) gpioaccess/CMakeFiles/gpioaccess.dir/build.make:77: recipe for target 'gpioaccess/CMakeFiles/gpioaccess.dir/pinmanager/pinmanager.cpp.o' failed make[2]: *** [gpioaccess/CMakeFiles/gpioaccess.dir/pinmanager/pinmanager.cpp.o] Error 1 CMakeFiles/Makefile2:75: recipe for target 'gpioaccess/CMakeFiles/gpioaccess.dir/all' failed make[1]: *** [gpioaccess/CMakeFiles/gpioaccess.dir/all] Error 2 Makefile:75: recipe for target 'all' failed make: *** [all] Error 2
After a little digging, I found that the fact that this collection was previously probably a mistake; however, I'm still not sure how to fix this. Does anyone have any points in the right direction?
gcc --version - gcc (Debian 4.6.3-14+rpi1) 4.6.3
source share