std :: unique_ptr y eliminadores personalizados

"C ++ moderno eficaz de Scott Meyer" discute el uso destd::unique_ptr con eliminador personalizado y estados:

Los eliminadores que son punteros de función generalmente causan el tamaño de unstd::unique_ptr crecer de una palabra a dos. Para los eliminadores que son objetos de función, el cambio de tamaño depende de la cantidad de estado almacenado en el objeto de función. Los objetos de función sin estado (p. Ej., De expresiones lambda sin capturas) no incurren en penalización de tamaño, y esto significa que cuando un eliminador personalizado puede implementarse como una función o una expresión lambda sin captura, es preferible el lambda.

Como ejemplo, esto:

auto delInvmt1 = [](Investment* pInvestment) {
makeLogEntry(pInvestment);
delete pInvestment;
};

template<typename... Ts>
std::unique_ptr<Investment, decltype(delInvmt1)>
makeInvestment(Ts&&... args);

es mejor que esto:

void delInvmt2(Investment* pInvestment) {
    makeLogEntry(pInvestment);
    delete pInvestment;
}

template<typename... Ts>
std::unique_ptr<Investment, void (*)(Investment*)>
makeInvestment(Ts&&... params);

Puedo ver que en el segundo caso, un puntero a la función de eliminación debe almacenarse en elunique_ptr, pero ¿por qué no se debe almacenar nada similar para el caso lambda?

Respuestas a la pregunta(1)

Su respuesta a la pregunta