https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113074
--- Comment #16 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #15) > The reason to avoid &*ptr is because it's undefined behaviour on a > past-the-end iterator, not because it might be ill-formed for some template > argument types. Hmm, actually void* is the one type where &*ptr isn't valid but std::to_address(ptr) still works. I don't think it's a common case though.