diff --git a/rclcpp/include/rclcpp/logging.hpp b/rclcpp/include/rclcpp/logging.hpp index 0ecfd21685..7fe8457cd8 100644 --- a/rclcpp/include/rclcpp/logging.hpp +++ b/rclcpp/include/rclcpp/logging.hpp @@ -32,9 +32,7 @@ #define RCLCPP_STATIC_ASSERT_LOGGER(logger) \ do { \ static_assert( \ - ::std::is_same>, \ - typename ::rclcpp::Logger>::value, \ + ::std::is_convertible_v, \ "First argument to logging macros must be an rclcpp::Logger"); \ } while (0) diff --git a/rclcpp/test/rclcpp/test_logging.cpp b/rclcpp/test/rclcpp/test_logging.cpp index 8e2214f8e6..6179faf788 100644 --- a/rclcpp/test/rclcpp/test_logging.cpp +++ b/rclcpp/test/rclcpp/test_logging.cpp @@ -253,9 +253,19 @@ bool log_function_const_ref(const rclcpp::Logger & logger) return true; } +class DerivedLogger : public rclcpp::Logger +{ +public: + explicit DerivedLogger(const rclcpp::Logger & logger) + : rclcpp::Logger(logger) {} +}; + TEST_F(TestLoggingMacros, test_log_from_node) { auto logger = rclcpp::get_logger("test_logging_logger"); EXPECT_TRUE(log_function(logger)); EXPECT_TRUE(log_function_const(logger)); EXPECT_TRUE(log_function_const_ref(logger)); + + DerivedLogger derived_logger(logger); + RCLCPP_INFO(derived_logger, "successful log from derived logger"); }