當我捕獲一個值,但該值的類型是在模板函數的引用C++ 11拉姆達捕獲列表[=]使用參考
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
但在T t1(t);
T
是int&
所以t1
應該是int&
當lambda調用時。爲什麼不輸出
2
3
3
我在lambda中測試。 [=]()mutable {mytesttypecode(decltype(t1)); return test(t1);}();並且t1是int&。我認爲沒有好的東西..... – user1625647