It's implementation-specific. You may reasonably expect it to be true, but here's what the standard says (N4140, [expr.prim.lambda]/3, emphasis mine):
An implementation may define the closure type differently from what is described below provided this does not alter the observable
behavior of the program other than by changing:
— the size and/or alignment of the closure type,
— whether the closure type is trivially copyable (Clause 9),
— whether the closure type is a standard-layout class (Clause 9), or
— whether the closure type is a POD class (Clause 9).
And by definition in [class]/3
A trivially copyable class is a class that:
— has no non-trivial copy constructors (12.8),
— has no non-trivial move constructors (12.8),
— has no non-trivial copy assignment operators (13.5.3, 12.8),
— has no non-trivial move assignment operators (13.5.3, 12.8), and
— has a trivial destructor (12.4).
So, an implementation is allowed to create a non-trivial destructor for the lambda.
However, you can check if your particluar implementation made your particular lambda trivially destructible by the following:
auto lambda = [&]{ /*...*/ };
static_assert(std::is_trivially_destructible<decltype(lambda)>::value, "Lambda isn't trivially destructible");