Sicolons em uma definição de classe

Eu estava lendothis gotw e aqui está um exemplo de códig

struct X {
  static bool f( int* p )
  {
    return p && 0[p] and not p[1:>>p[2];
  };
};

A questão era: quantos erros um compilador compatível deve fornecer:

Eu respondi uma, porque esse código é equivalente a

struct X {
  static bool f( int* p )
  {
    return p && p[0] && ! p[1] > p[2];
  };
};

E eu estava pensando que um ponto-e-vírgula após uma definição de função estática seria um erro. Mas o Sr. Sutter diz 0 e explica (além das coisas que eu entendo) que

O ponto e vírgula "extra" é permitido no final de uma declaração de funçã

Minha pergunta é

Que texto no padrão permite isso? Refere-se apenas às funções de membro?

Pode aparecer um ponto-e-vírgula entre dois membros ou em qualquer outro lugar em uma definição de classe como em

 struct X
 {
   int a;;;;int b; //Legal?
 };

questionAnswers(2)

yourAnswerToTheQuestion