In file included from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/jianzhi/catkin_ws/src/learning_topic/src/velocity_publisher.cpp:2:
/opt/ros/noetic/include/ros/publisher.h: In member function ‘boost::function<void(const boost::shared_ptr<ros::SubscriberLink>&)> ros::Publisher::getLastMessageCallback()’:
/opt/ros/noetic/include/ros/publisher.h:174:70: error: ‘boost::placeholders’ has not been declared
  174 |       return boost::bind(&Impl::pushLastMessage, impl_.get(), boost::placeholders::_1);
      |                                                                      ^~~~~~~~~~~~
In file included from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/jianzhi/catkin_ws/src/learning_topic/src/velocity_publisher.cpp:2:
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(M), T*, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:406:91: error: ‘boost::placeholders’ has not been declared
  406 |     ops.template initByFullCallbackType<M>(topic, queue_size, boost::bind(fp, obj, boost::placeholders::_1));
      |                                                                                           ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(M) const, T*, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:417:91: error: ‘boost::placeholders’ has not been declared
  417 |     ops.template initByFullCallbackType<M>(topic, queue_size, boost::bind(fp, obj, boost::placeholders::_1));
      |                                                                                           ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(const boost::shared_ptr<const M>&), T*, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:470:73: error: ‘boost::placeholders’ has not been declared
  470 |     ops.template init<M>(topic, queue_size, boost::bind(fp, obj, boost::placeholders::_1));
      |                                                                         ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(const boost::shared_ptr<const M>&) const, T*, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:480:73: error: ‘boost::placeholders’ has not been declared
  480 |     ops.template init<M>(topic, queue_size, boost::bind(fp, obj, boost::placeholders::_1));
      |                                                                         ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(M), const boost::shared_ptr<U>&, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:533:97: error: ‘boost::placeholders’ has not been declared
  533 |     ops.template initByFullCallbackType<M>(topic, queue_size, boost::bind(fp, obj.get(), boost::placeholders::_1));
      |                                                                                                 ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(M) const, const boost::shared_ptr<U>&, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:544:97: error: ‘boost::placeholders’ has not been declared
  544 |     ops.template initByFullCallbackType<M>(topic, queue_size, boost::bind(fp, obj.get(), boost::placeholders::_1));
      |                                                                                                 ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(const boost::shared_ptr<const M>&), const boost::shared_ptr<U>&, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:599:79: error: ‘boost::placeholders’ has not been declared
  599 |     ops.template init<M>(topic, queue_size, boost::bind(fp, obj.get(), boost::placeholders::_1));
      |                                                                               ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Subscriber ros::NodeHandle::subscribe(const string&, uint32_t, void (T::*)(const boost::shared_ptr<const M>&) const, const boost::shared_ptr<U>&, const ros::TransportHints&)’:
/opt/ros/noetic/include/ros/node_handle.h:610:79: error: ‘boost::placeholders’ has not been declared
  610 |     ops.template init<M>(topic, queue_size, boost::bind(fp, obj.get(), boost::placeholders::_1));
      |                                                                               ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::ServiceServer ros::NodeHandle::advertiseService(const string&, bool (T::*)(MReq&, MRes&), T*)’:
/opt/ros/noetic/include/ros/node_handle.h:882:78: error: ‘boost::placeholders’ has not been declared
  882 |     ops.template init<MReq, MRes>(service, boost::bind(srv_func, obj, boost::placeholders::_1, boost::placeholders::_2));
      |                                                                              ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h:882:103: error: ‘boost::placeholders’ has not been declared
  882 |     ops.template init<MReq, MRes>(service, boost::bind(srv_func, obj, boost::placeholders::_1, boost::placeholders::_2));
      |                                                                                                       ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::ServiceServer ros::NodeHandle::advertiseService(const string&, bool (T::*)(ros::ServiceEvent<MReq, MRes>&), T*)’:
/opt/ros/noetic/include/ros/node_handle.h:927:103: error: ‘boost::placeholders’ has not been declared
  927 |     ops.template initBySpecType<ServiceEvent<MReq, MRes> >(service, boost::bind(srv_func, obj, boost::placeholders::_1));
      |                                                                                                       ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::ServiceServer ros::NodeHandle::advertiseService(const string&, bool (T::*)(MReq&, MRes&), const boost::shared_ptr<X>&)’:
/opt/ros/noetic/include/ros/node_handle.h:973:84: error: ‘boost::placeholders’ has not been declared
  973 |     ops.template init<MReq, MRes>(service, boost::bind(srv_func, obj.get(), boost::placeholders::_1, boost::placeholders::_2));
      |                                                                                    ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h:973:109: error: ‘boost::placeholders’ has not been declared
  973 |     ops.template init<MReq, MRes>(service, boost::bind(srv_func, obj.get(), boost::placeholders::_1, boost::placeholders::_2));
      |                                                                                                             ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::ServiceServer ros::NodeHandle::advertiseService(const string&, bool (T::*)(ros::ServiceEvent<MReq, MRes>&), const boost::shared_ptr<X>&)’:
/opt/ros/noetic/include/ros/node_handle.h:1020:109: error: ‘boost::placeholders’ has not been declared
 1020 |     ops.template initBySpecType<ServiceEvent<MReq, MRes> >(service, boost::bind(srv_func, obj.get(), boost::placeholders::_1));
      |                                                                                                             ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Timer ros::NodeHandle::createTimer(ros::Duration, void (T::*)(const ros::TimerEvent&) const, T*, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1316:66: error: ‘boost::placeholders’ has not been declared
 1316 |     return createTimer(period, boost::bind(callback, obj, boost::placeholders::_1), oneshot, autostart);
      |                                                                  ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Timer ros::NodeHandle::createTimer(ros::Duration, void (T::*)(const ros::TimerEvent&), T*, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1336:66: error: ‘boost::placeholders’ has not been declared
 1336 |     return createTimer(period, boost::bind(callback, obj, boost::placeholders::_1), oneshot, autostart);
      |                                                                  ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::Timer ros::NodeHandle::createTimer(ros::Duration, void (T::*)(const ros::TimerEvent&), const boost::shared_ptr<X>&, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1358:70: error: ‘boost::placeholders’ has not been declared
 1358 |     TimerOptions ops(period, boost::bind(callback, obj.get(), boost::placeholders::_1), 0);
      |                                                                      ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::WallTimer ros::NodeHandle::createWallTimer(ros::WallDuration, void (T::*)(const ros::WallTimerEvent&), T*, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1413:70: error: ‘boost::placeholders’ has not been declared
 1413 |     return createWallTimer(period, boost::bind(callback, obj, boost::placeholders::_1), oneshot, autostart);
      |                                                                      ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::WallTimer ros::NodeHandle::createWallTimer(ros::WallDuration, void (T::*)(const ros::WallTimerEvent&), const boost::shared_ptr<X>&, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1436:74: error: ‘boost::placeholders’ has not been declared
 1436 |     WallTimerOptions ops(period, boost::bind(callback, obj.get(), boost::placeholders::_1), 0);
      |                                                                          ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::SteadyTimer ros::NodeHandle::createSteadyTimer(ros::WallDuration, void (T::*)(const ros::SteadyTimerEvent&), T*, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1492:72: error: ‘boost::placeholders’ has not been declared
 1492 |     return createSteadyTimer(period, boost::bind(callback, obj, boost::placeholders::_1), oneshot, autostart);
      |                                                                        ^~~~~~~~~~~~
/opt/ros/noetic/include/ros/node_handle.h: In member function ‘ros::SteadyTimer ros::NodeHandle::createSteadyTimer(ros::WallDuration, void (T::*)(const ros::SteadyTimerEvent&), const boost::shared_ptr<X>&, bool, bool) const’:
/opt/ros/noetic/include/ros/node_handle.h:1515:76: error: ‘boost::placeholders’ has not been declared
 1515 |     SteadyTimerOptions ops(period, boost::bind(callback, obj.get(), boost::placeholders::_1), 0);
      |                                                                            ^~~~~~~~~~~~
In file included from /opt/ros/noetic/include/ros/ros.h:55,
                 from /home/jianzhi/catkin_ws/src/learning_topic/src/velocity_publisher.cpp:2:
/opt/ros/noetic/include/ros/topic.h: In function ‘boost::shared_ptr<const M> ros::topic::waitForMessage(const string&, ros::NodeHandle&, ros::Duration)’:
/opt/ros/noetic/include/ros/topic.h:90:93: error: ‘boost::placeholders’ has not been declared
   90 |   ops.template init<M>(topic, 1, boost::bind(&SubscribeHelper<M>::callback, &helper, boost::placeholders::_1));
      |                                                                                             ^~~~~~~~~~~~
make[2]: *** [learning_topic/CMakeFiles/velocity_publisher.dir/build.make:76: learning_topic/CMakeFiles/velocity_publisher.dir/src/velocity_publisher.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:419: learning_topic/CMakeFiles/velocity_publisher.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Invoking "make -j8 -l8" failed