// 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' returned to caller}} 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()();
}
