를 사용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
는 람다 test(t1)
를 호출 할 때 int&
그렇게 t1
가 int&
해야합니다. 왜 출력이 아닌 람다는 test()
에 전달 t1
의 로컬 복사본을 획득, 그래서 캡처 별 값 [=]
을 통해
2
3
3
나는 람다에서 테스트합니다. [=() {가변 mytesttypecode (decltype (T1)); 복귀 시험 (T1)}(); t1은 int &이다. 내가 생각하기에 좋지 않은 무언가 ..... – user1625647