in the first case, operator() on the lambda is explicitly marked as a constexpr function. This is redundant because lambda operator()s are automatically constexpr if they can be.
in the second case, the lambda's operator() is auto-constexpr as always, and the variable "squared5" is a constexpr variable, which also makes it a const variable, so we can contrive a difference:
1 2 3 4 5
int main()
{
squared4 = decltype(squared4){}; // OK: can be reassigned
// squared5 = decltype(squared5){}; // Error: const (because of constexpr)
}