I\'m looking for a formal explanation of that fact in the Standard. I\'ve found what 3.9.1/9 says and trying to give an explanation used that section.
S
You cannot declare a variable of type void because variables must have object type or be references, extern void f; doesn't declare a reference, and void is not an object type:
Section 3 [basic] says that
A variable is introduced by the declaration of a reference other than a non-static data member or of an object.
Section 3.9 [basic.types] says that
An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not a
voidtype.