You should just be able to set the -std=c++11 flag in CMakeLists.txt of the package:
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")
If you want to enable it only when possible, I use this to do so:
# check c++11 / c++0x
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "-std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "-std=c++0x")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
If you don't want to stop when 11 or 0x is not detected, simply comment out those lines.
This is a very bad idea to use C++11 in ROS linked modules. There is no guarantee that C++03 and C++11 will stay ABI-compatible! It may break at anytime without prior notice because it only works ""by chance"" currently! http://stackoverflow.com/questions/12637699/c03-library-with-c11-source-code
I have had problems with C++11 and ROS in the past. If you have a robot with Ubuntu 12.04 preinstalled you are going to have a bad time using C++11, because the boost version in 12.04 is not compatible with C++11. I recommend using C++03 which is the standard: http://www.ros.org/reps/rep-0003.html