https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112350
Bug ID: 112350 Summary: gcc is not triggering a dangling reference indicating stack use after return Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mohamed.selim at dxc dot com Target Milestone: --- Scenario A: gcc is not triggering a dangling reference indicating stack use after return, the address-sanitizer does trigger though. "==1==ERROR: AddressSanitizer: stack-use-after-return on" Scenario B: gcc triggers a warning "-Wreturn-local-addr" The sanitizers intervenes in both scenarios as expected, while gcc warnings in not triggered in scenario A. Looks like the reference_wrapper has something to do with it. compiler options used: -std=c++14 -Wframe-address -Wreturn-local-addr -Wall -Wextra -Wpedantic -fsanitize=address #include <iostream> #include <utility> // scenario A const int& foo() { int x = 234; std::reference_wrapper<int> s{x}; return s.get(); } // scenario B const int& foo() { int s = 234; return s; } int main() { const auto& f_res = foo(); std::cout << "result: " << f_res << "\n"; return 0; }