解决 ‘chrono_literals’ is not a namespace-name和‘optional’ in namespace ‘std’ does not name a template

自己在编译工程出现如下报错:

  • error: ‘optional’ in namespace ‘std’ does not name a template type
  • error: ‘chrono_literals’ is not a namespace-name

在这里插入图片描述
在这里插入图片描述

多次出现此编译error,在此记录一下:
根据第二张截图,可以定位到ros_motion_planning_pro/src/plugins/gazebo_plugins/pedestrian_visualizer_plugin/gazebo_ped_visualizer_plugin/CMakeLists.txt文件中添加

add_compile_options(-std=c++17)
# 或
set(CMAKE_CXX_STANDARD 17)

注意:放在find_package{}之前。
在这里插入图片描述

原因可能是:std::optional 是C++17中专有。