From b44b987d4b930c513754f7e81380b6da8a72c550 Mon Sep 17 00:00:00 2001 From: Clemens Terasa Date: Wed, 19 Feb 2025 19:46:29 +0100 Subject: [PATCH] chaiscript_eval: Fix warning by replacing lambda with ternary operator expression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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::eval_internal(const chaiscript::detail::Dispatch_State&) const [with T = chaiscript::eval::Tracer]’: .../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 ‘chaiscript::eval::Global_Decl_AST_Node >::eval_internal(const chaiscript::detail::Dispatch_State&) const::{((const chaiscript::eval::Global_Decl_AST_Node >*)this)}.chaiscript::eval::Global_Decl_AST_Node >::eval_internal(const chaiscript::detail::Dispatch_State&) const::()’ 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. --- include/chaiscript/language/chaiscript_eval.hpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/include/chaiscript/language/chaiscript_eval.hpp b/include/chaiscript/language/chaiscript_eval.hpp index 4997d667..cd171b36 100644 --- a/include/chaiscript/language/chaiscript_eval.hpp +++ b/include/chaiscript/language/chaiscript_eval.hpp @@ -501,13 +501,7 @@ namespace chaiscript { } Boxed_Value eval_internal(const chaiscript::detail::Dispatch_State &t_ss) const override { - const std::string &idname = [&]() -> const std::string & { - if (this->children[0]->identifier == AST_Node_Type::Reference) { - return this->children[0]->children[0]->text; - } else { - return this->children[0]->text; - } - }(); + const std::string &idname = (this->children[0]->identifier == AST_Node_Type::Reference) ? this->children[0]->children[0]->text : this->children[0]->text; return t_ss->add_global_no_throw(Boxed_Value(), idname); }