// RUN: %clang_analyze_cc1 -analyzer-checker core,cplusplus -verify %s // expected-no-diagnostics // Stripped down unique_ptr struct IntPtr { IntPtr(): i(new int) {} IntPtr(IntPtr &&o): i(o.i) { o.i = nullptr; } ~IntPtr() { delete i; } int *i; }; @interface Foo {} -(void) foo: (IntPtr)arg; @end void bar(Foo *f) { IntPtr ptr; int *i = ptr.i; [f foo: static_cast(ptr)]; *i = 99; // no-warning }