https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70096
--- Comment #5 from Patrick Palka <ppalka at gcc dot gnu.org> --- This means we've been miscompiling such pointer-to-member-function copies long before gcc 6, e.g.: int read; struct Holder { void foo () { read = data; } int data; }; template <typename F> void test1() { Holder h; h.data = 42; void (Holder::*fptr1) () = &Holder::foo; F Holder::*fptr2 = fptr1; (h.*fptr2)(); } int main() { test1<void()>(); }