当我捕获一个值但值类型是模板函数中的引用时
template<class T>
void test(T&&i)
{
++i;
std::cout << i << std::endl;
}
template<class T>
void typetest(T&& t)
{
++t;
T t1(t);
[=]() mutable { std::cout << t1 << std::endl; return test(t1); }();
std::cout << t << std::endl;
}
int main()
{
int i=1;
typetest(i);
}
它打印
2
3
2
但是在lambda 调用时应该T t1(t);
T
是int&
这样。为什么没有输出t1
int&
test(t1)
2
3
3