cuando capture a un valor, pero el tipo de valor es una referencia en una función de plantillaC++ 11 lambda lista de captura [=] utilizar una referencia
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);
}
imprime
2
3
2
Pero en T t1(t);
T
es int&
así que t1
debe ser int&
cuando el lambda llama test(t1)
. ¿Por qué es la salida no
2
3
3
Pruebo en lambda. [=]() mutable {mytesttypecode (decltype (t1)); return test (t1);}(); y t1 es int &. algo no es bueno, creo ..... – user1625647