В смысле локальная переменная, она же вроде не создается каждый раз при вызове функции где лямбда как переменная используется
Эм... А как тогда будет список захвата формироваться, зависящий от контекста объявления и значений локальных переменных в этом контексте? Так то понятно, что это - класс (локальный, иногда - шаблонный, с некоторыми особенностями), "созданный" компилятором один раз. Но именно экземпляр лямбды (как объект) создаётся при каждом входе в функцию. Если, конечно, его не объявить как static.