llvm/clang/test/Analysis/stackaddrleak.cpp

// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s

using size_t = decltype(sizeof(int));
void *operator new(size_t, void *p) { return p; }

struct myfunction {
  union storage_t {
    char buffer[100];
    size_t max_align;
  } storage;

  template <typename Func> myfunction(Func fn) {
    new (&storage.buffer) Func(fn);
  }
  void operator()();
};

myfunction create_func() {
  int n;
  auto c = [&n] {};
  return c; // expected-warning {{Address of stack memory associated with local variable 'n' is still referred to by a temporary object on the stack upon returning to the caller.  This will be a dangling reference}}
}
void gh_66221() {
  create_func()();
}