Я попытался увеличиваем локальную переменную из лямбда-выражения:Как увеличить переменную от тела лямбда-функтора?
#include <iostream>
template<typename T>
T foo(T t){
T temp{};
[temp]() -> void {
temp++;
}();
return temp;
}
int main()
{
std::cout<< foo(10) << std::endl;
}
Но получил следующее сообщение об ошибке:
main.cpp: In instantiation of 'foo(T)::<lambda()> [with T = int]':
main.cpp:6:6: required from 'struct foo(T) [with T = int]::<lambda()>'
main.cpp:8:6: required from 'T foo(T) [with T = int]'
main.cpp:14:23: required from here
main.cpp:7:13: error: increment of read-only variable 'temp'
temp++;
^
Есть ли обходной путь о том, что в C++ 11/14?
Будет ли это просто изменить скопированный один, и не имеет ничего делать с внешней «temp»? http://ideone.com/pCwE3N – songyuanyao
@songyuanyao: да. :-) – Nawaz
@songyuanyao Да, это по-прежнему захватывающая ценность, независимо от изменчивости. – TartanLlama