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->(); };

Reply via email to