https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113074
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Peter Kasting from comment #8) > There's currently no simple and blessed route for consumers to convert > raw-or-fancy-pointer input types to raw pointers. I disagree, std::to_address does exactly that. The problem here seems to be that Chromium is expecting it to do more than that. Given a raw-or-fancy-pointer std::to_address will turn it into a raw pointer. What the testcase above seems to be trying to do is to use std::to_address as a proxy for answering the question "is this a raw or fancy pointer". That's not what it's for. Can't you use something like this to check that instead? template<typename T> concept IsPointerLike = requires { typename std::pointer_traits<T>::pointer; } || requires (const T& t) { t.operator->(); };