Skip to content

Commit e615c7c

Browse files
authored
Allow for implicitly convertable loggers as well (#2922)
* Allow for implicitly convertable loggers as well Signed-off-by: Tim Clephas <[email protected]> * Test implicitly convertable logger Signed-off-by: Tim Clephas <[email protected]> * This can be simplified now Signed-off-by: Tim Clephas <[email protected]> * fixup! This can be simplified now Signed-off-by: Tim Clephas <[email protected]> --------- Signed-off-by: Tim Clephas <[email protected]>
1 parent 3767779 commit e615c7c

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

rclcpp/include/rclcpp/logging.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@
3232
#define RCLCPP_STATIC_ASSERT_LOGGER(logger) \
3333
do { \
3434
static_assert( \
35-
::std::is_same<typename std::remove_cv_t< \
36-
typename std::remove_reference_t<decltype(logger)>>, \
37-
typename ::rclcpp::Logger>::value, \
35+
::std::is_convertible_v<decltype(logger), ::rclcpp::Logger>, \
3836
"First argument to logging macros must be an rclcpp::Logger"); \
3937
} while (0)
4038

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)