https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67582

--- Comment #5 from Vegard Nossum <vegard.nossum at gmail dot com> ---
(In reply to Jonathan Wakely from comment #4)
> But *p is not a valid expression, so you might as well ask for
> typeof(this is nonsense and not valid C++).
> 
> You also can't ask for sizeof(*p) for a void pointer.

The following bits from the standard draft seem to support what you say:

[basic.compound].3 "The type of a pointer to void or a pointer to an object
type is called an object pointer type. [ Note: A pointer to void does not have
a pointer-to-object type, however, because void is not an object type. — end
note ]"

[expr.unary.op].1 "The unary * operator performs indirection: the expression to
which it is applied shall be a pointer to an object type, or a pointer to a
function type and the result is an lvalue referring to the object or function
to which the expression points."

Reply via email to