#include<type_traits> void foo(int& l) { static_assert(std::is_same_v<decltype(l), int&>); static_assert(std::is_same_v<decltype((l)), int&>); auto fn = [l]() { static_assert(std::is_same_v<decltype(l), int&>); static_assert(std::is_same_v<decltype((l)), const int&>); }; }