Skip to content

Commit 8a4cb48

Browse files
authored
Allow for implicitly convertable loggers as well (#2922) (#2936)
Signed-off-by: Tim Clephas <tim.clephas@nobleo.nl>
1 parent aa634b2 commit 8a4cb48

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

rclcpp/resource/logging.hpp.em

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ def get_rclcpp_suffix_from_features(features):
124124
) \
125125
do { \
126126
static_assert( \
127-
::std::is_same<typename std::remove_cv_t<typename std::remove_reference_t<decltype(logger)>>, \
128-
typename ::rclcpp::Logger>::value, \
127+
::std::is_convertible_v<decltype(logger), ::rclcpp::Logger>, \
129128
"First argument to logging macros must be an rclcpp::Logger"); \
130129
@[ if 'throttle' in feature_combination]@ \
131130
auto get_time_point = [&c=clock](rcutils_time_point_value_t * time_point) -> rcutils_ret_t { \

rclcpp/test/rclcpp/test_logging.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,19 @@ bool log_function_const_ref(const rclcpp::Logger & logger)
253253
return true;
254254
}
255255

256+
class DerivedLogger : public rclcpp::Logger
257+
{
258+
public:
259+
explicit DerivedLogger(const rclcpp::Logger & logger)
260+
: rclcpp::Logger(logger) {}
261+
};
262+
256263
TEST_F(TestLoggingMacros, test_log_from_node) {
257264
auto logger = rclcpp::get_logger("test_logging_logger");
258265
EXPECT_TRUE(log_function(logger));
259266
EXPECT_TRUE(log_function_const(logger));
260267
EXPECT_TRUE(log_function_const_ref(logger));
268+
269+
DerivedLogger derived_logger(logger);
270+
RCLCPP_INFO(derived_logger, "successful log from derived logger");
261271
}

0 commit comments

Comments
 (0)