class X; // X is an incomplete type
extern X* xp; // xp is a pointer to an incomplete type
extern int arr[]; // the type of arr is incomplete
typedef int UNKA[]; // UNKA is an incomplete type
UNKA* arrp; // arrp is a pointer to an incomplete type
UNKA** arrpp;
But according to the first provided quote this object definition
UNKA* arrp; // arrp is a pointer to an incomplete type
is invalid because such a pointer has an incomplete type.
So it looks like the example does not make sense or do I have missed something?