Skip to content

Commit 443b69b

Browse files
mergify[bot]Timple
andauthored
Allow for implicitly convertable loggers as well (#2922) (#2936) (#2938)
(cherry picked from commit 8a4cb48) Signed-off-by: Tim Clephas <[email protected]> Co-authored-by: Tim Clephas <[email protected]>
1 parent 0036533 commit 443b69b

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

rclcpp/resource/logging.hpp.em

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,7 @@ def get_rclcpp_suffix_from_features(features):
125125
) \
126126
do { \
127127
static_assert( \
128-
::std::is_same<typename std::remove_cv_t<typename std::remove_reference_t<decltype(logger)>>, \
129-
typename ::rclcpp::Logger>::value, \
128+
::std::is_convertible_v<decltype(logger), ::rclcpp::Logger>, \
130129
"First argument to logging macros must be an rclcpp::Logger"); \
131130
@[ if 'throttle' in feature_combination]@ \
132131
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)