Comprender cómo el tipo de cierre Lambda ha eliminado el constructor predeterminado

De 5.1.2

[19] El tipo de cierre asociado con una expresión lambdatiene un constructor predeterminado eliminado (8.4.3) y un operador de asignación de copia eliminado. Tiene un constructor de copia declarado implícitamente (12.8) y puede tener un constructor de movimiento declarado implícitamente (12.8). [Nota: El constructor copiar / mover se define implícitamente de la misma manera que cualquier otro constructor copia / mover declarado implícitamente se definiría implícitamente. —Nota final]

Estoy leyendo C ++ Primer 14.8.1 que explica las expresiones lambda que el compilador traduce a un objeto sin nombre de una clase sin nombre. ¿Cómo puedo definir objetos de funciones lambda que no contengan una captura lambda, si se elimina el constructor predeterminado?

 auto g = [](){};

¿No es conceptualmente lo mismo que ...

 class lambdaClass{
 public:
      lambdaClass() = delete;
      lambdaClass& operator=(const lambdaClass&) = delete;
      void operator()(){ }

      //copy/move constructor and destructor implicitly defined
};

auto g = lambdaClass(); //would be an error since default is deleted.

Si hubo una captura, entonces un constructorotro se definiría el constructor predeterminado y estaría bien inicializar objetos de este tipo (siempre que se pasara un parámetro). Pero si no hay captura y se elimina el constructor predeterminado, no parece coherente conceptualmente que se pueda crear un objeto de clase lambda.

Editar: Hmm, tal vez la concepción de que la clase lambda crea constructores dependiendo de sus capturas lambda carece de fundamento a pesar de que así se describe en C ++ Primer (no puedo encontrar ninguna cita en el estándar), porque el siguiente código no funciona incluso aunque esperaría que conceptualmente:

int sz = 2;
auto a = [sz](){ return sz;};
decltype(a) b(10); //compiler error
decltype(a) b = a; //all good though