+/*
+ * If p is const (the pointer itself, not what it points to), using
+ * __typeof__(p) would declare a const variable, leading to
+ * -Wincompatible-pointer-types errors. Using the statement expression
+ * makes it an rvalue and gets rid of the const-ness.
+ */