【发布时间】:2021-06-26 13:06:00
【问题描述】:
#include <type_traits>
int x = 0;
void f(int const x)
{
static_assert(std::is_const_v<decltype(x)>); // ok
}
int main()
{
int n = 0;
[n, m = n]
{
static_assert(std::is_const_v<decltype(m)>); // ok
static_assert(std::is_const_v<decltype(n)>); // err
};
}
为什么 decltype(captured_var) 表现不如预期?
【问题讨论】:
-
因为如果 lambda 未声明为可变,则所有捕获的变量默认为 const。在这里说
m,正如预期的那样是const。
标签: c++ lambda c++17 decltype type-deduction