В те времена, когда C был королем, обычно писали такой код:
struct { int x; int y; } pt1, pt2;
Этот код создает анонимную структуру и объявляет две переменные этого типа.
Стандарт, который вы цитируете, в основном говорит, что вы не можете сделать это для типов шаблонов. Таким образом, плохо сформировано следующее:
template <typename T> struct { T x; T y; } pt1, pt2;
Причина должна быть очевидна - у pt1 и pt2 нет полного типа - мы не знаем, что такое T, когда объявляем их.
Однако такой стиль объявления довольно редко встречается в C ++, так что это несколько несущественное ограничение.