¿Existe una regla especial para lambda en caso de decltype (auto)?

Si entendí correctamenteesta respuesta y sección estándar referenciada[dcl.type.auto.deduct-5], el código:

decltype(auto) a = e;

siempre es equivalente a

decltype( e  ) a = e;

Pero ahora el problema aparece si en lugar dee Puse la expresión lambda paradecltype(auto):

decltype(auto) lambda = [](){};

Esto compila, para mi sorpresa, con éxito en ambosgcc ysonido metálico. La razón de la conmoción que he experimentado está en el estándar que dice específicamente que lambda no debería ocurrir en operandos no evaluados[expr.prim.lambda # 2] (énfasis mío):

Una expresión lambda es un valor pr cuyo valor resultante se llama objeto de cierre.Una expresión lambda no aparecerá en un operando no evaluado, en un argumento de plantilla, en una declaración de alias, en una declaración typedef o en la declaración de una función o plantilla de función fuera de su cuerpo de función y argumentos predeterminados.

Pero como mencioné, el ejemplo sería equivalente a:

decltype([](){}) lambda = [](){};

El código anterior escrito explícitamente obviamente estaría mal formado. Por supuesto, podríamos suponer que la declaración[](){} dentrodecltype es un tipo de referencia que no es realmente una referencia como en el caso deenlaces estructurados, pero tal vez hay una regla especial en el estándar que me he perdido cubriendo la inicialización lambdadecltype(auto)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta