Uzyskaj przechwycone zmienne z lambda?

Zastanawiałem się, czy istnieje sposób na uzyskanie typów / wartości przechwyconych zmiennych lambda? - Scenariusz użycia byłby podobny;

int a = 5;
auto lamb = [a](){ return a; };
static_assert(std::is_same<typename get_capture_type<0>(lamb)::type, int>::value, "");
assert(get_capture_value<0>(lamb) == 5)

Uwaga:get_capture_*<N>(lambda) powinien oczywiście powodować błąd kompilatora, kiedyN > #captured_variables.

To, czego potrzebuję, to w rzeczywistości sposób na uzyskanie dostępu do przechwyceń, jeśli to możliwe. To znaczy, że mogę zrobić sam metaprogramowanie szablonu.

questionAnswers(2)

yourAnswerToTheQuestion