我想知道,是否有办法获取捕获的 lambda 变量的类型/值?- 使用场景类似;
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)
注意:get_capture_*<N>(lambda)
显然应该导致编译器错误,当N > #captured_variables
.
如果可能的话,我实际上需要的只是一种以某种方式访问捕获的方法。也就是说,我可以自己进行模板元编程。