Универсальные лямбда-выражения — это лямбда-выражения, в которых как минимум для одного параметра в качестве типа указано слово auto или выражения auto& или const auto&. 1 Это позволяет уйти от жёсткой привязки параметров к определённому типу. 1
Обычные лямбда-функции — это функции, которые, как и обычные функции, могут принимать аргументы и возвращать значения. 3 Но, в отличие от обычных функций, они могут «захватывать» значения из того контекста, в котором объявлены, по значению или по ссылке (иными словами, лямбда-функция может использовать значения снаружи или указатели на них). 3
Таким образом, основное отличие в том, что универсальные лямбда-выражения позволяют не привязывать параметры к определённому типу, а конкретные типы выводит компилятор при вызове лямбда-выражения исходя из переданных в него значений. 1