¿Hay alguna razón por la que no podamos nombrar una función miembro no estática en un contexto no evaluado?

Al leer[expr.prim.id], uno verá que

Una expresión de identificación que denota un miembro de datos no estático o una función de miembro no estático de una clase solo se puede usar:

si esa expresión id denota un miembro de datos no estático y aparece en un operando no evaluado.

El hecho de que la viñeta anterior se aplica solo a los miembros de datos no me queda claro. Intuitivamente, esperaría que lo siguiente esté bien formado:

#include <type_traits>

using func = int();

class bar {
  func foo; // This is valid, and not the subject of the question
};

static_assert(std::is_same<decltype(bar::foo), func>::value, "No Symmetry!");

Pero eldecltype() está mal formado incluso antes de que se verifique la aserción estática.

¿Hay alguna ambigüedad que me falta?

Respuestas a la pregunta(3)

Su respuesta a la pregunta