Skip to content

Commit b44b987

Browse files
committed
chaiscript_eval: Fix warning by replacing lambda with ternary operator expression
Using GCC 13.3.0 I get warnings like the following: ``` In file included from .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_optimizer.hpp:10, from .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_parser.hpp:26, from .../ChaiScript/static_libs/chaiscript_parser.cpp:1: .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_eval.hpp: In instantiation of ‘chaiscript::Boxed_Value chaiscript::eval::Global_Decl_AST_Node<T>::eval_internal(const chaiscript::detail::Dispatch_State&) const [with T = chaiscript::eval::Tracer<chaiscript::eval::Noop_Tracer_Detail>]’: .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_eval.hpp:503:19: required from here .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_eval.hpp:504:28: warning: possibly dangling reference to a temporary [-Wdangling-reference] 504 | const std::string &idname = [&]() -> const std::string & { | ^~~~~~ .../ChaiScript/static_libs/../include/chaiscript/language/chaiscript_eval.hpp:510:10: note: the temporary was destroyed at the end of the full expression ‘<lambda closure object>chaiscript::eval::Global_Decl_AST_Node<chaiscript::eval::Tracer<chaiscript::eval::Noop_Tracer_Detail> >::eval_internal(const chaiscript::detail::Dispatch_State&) const::<lambda()>{((const chaiscript::eval::Global_Decl_AST_Node<chaiscript::eval::Tracer<chaiscript::eval::Noop_Tracer_Detail> >*)this)}.chaiscript::eval::Global_Decl_AST_Node<chaiscript::eval::Tracer<chaiscript::eval::Noop_Tracer_Detail> >::eval_internal(const chaiscript::detail::Dispatch_State&) const::<lambda()>()’ 504 | const std::string &idname = [&]() -> const std::string & { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 505 | if (this->children[0]->identifier == AST_Node_Type::Reference) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 506 | return this->children[0]->children[0]->text; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 507 | } else { | ~~~~~~~~ 508 | return this->children[0]->text; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 509 | } | ~ 510 | }(); | ~^~ ``` Fix this by replacing the lambda with a simple ternary operator expression.
1 parent 43dc35c commit b44b987

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

include/chaiscript/language/chaiscript_eval.hpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -501,13 +501,7 @@ namespace chaiscript {
501501
}
502502

503503
Boxed_Value eval_internal(const chaiscript::detail::Dispatch_State &t_ss) const override {
504-
const std::string &idname = [&]() -> const std::string & {
505-
if (this->children[0]->identifier == AST_Node_Type::Reference) {
506-
return this->children[0]->children[0]->text;
507-
} else {
508-
return this->children[0]->text;
509-
}
510-
}();
504+
const std::string &idname = (this->children[0]->identifier == AST_Node_Type::Reference) ? this->children[0]->children[0]->text : this->children[0]->text;
511505

512506
return t_ss->add_global_no_throw(Boxed_Value(), idname);
513507
}

0 commit comments

Comments
 (0)