Merge branch 'get-symbol-support-capture-lambdas' into 'master'
Add get_symbol overload as fallback for lambdas with capture See merge request micro-ROS/ros_tracing/ros2_tracing!100
This commit is contained in:
commit
cde12ea0b7
2 changed files with 26 additions and 0 deletions
|
@ -38,4 +38,11 @@ const char * get_symbol(std::function<T(U...)> f)
|
|||
return _demangle_symbol(f.target_type().name());
|
||||
}
|
||||
|
||||
// Fallback meant for lambdas with captures
|
||||
template<typename L>
|
||||
const char * get_symbol(L && l)
|
||||
{
|
||||
return _demangle_symbol(typeid(l).name());
|
||||
}
|
||||
|
||||
#endif // TRACETOOLS__UTILS_HPP_
|
||||
|
|
|
@ -57,6 +57,25 @@ TEST(TestUtils, valid_symbol_lambda) {
|
|||
"invalid symbol";
|
||||
}
|
||||
|
||||
/*
|
||||
Testing symbol resolution lambdas with capture.
|
||||
*/
|
||||
TEST(TestUtils, valid_symbol_lambda_capture) {
|
||||
int num = 1;
|
||||
|
||||
auto l = [ = ]() {return num + 1;};
|
||||
EXPECT_STREQ(
|
||||
get_symbol(l),
|
||||
"TestUtils_valid_symbol_lambda_capture_Test::TestBody()::{lambda()#1}") <<
|
||||
"invalid symbol";
|
||||
|
||||
auto m = [&](int other_num) {return num + other_num;};
|
||||
EXPECT_STREQ(
|
||||
get_symbol(m),
|
||||
"TestUtils_valid_symbol_lambda_capture_Test::TestBody()::{lambda(int)#2}") <<
|
||||
"invalid symbol";
|
||||
}
|
||||
|
||||
/*
|
||||
Testing symbol resolution for std::function object created from std::bind.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue