0
클로저 모양의 개체에서 함수에 전달 된 매개 변수를 캡처하려고합니다. 주요 목표는 모든 유형의 매개 변수를 캡처 (사본이 아닌 참조 저장)하는 것입니다. 여기C++ 11을 사용하여 효율적인 클로저를 만드는 방법은 무엇입니까?
(. 여기 why의)에만이 매개 변수 저장을 한 쌍의 캡처 매우 단순화 된 버전입니다 :
main.cpp: In instantiation of 'void foo(T1&&, T2&&) [with T1 = basic_string<char>&; T2 = basic_string<char>&]':
main.cpp: error: no matching function for call to 'forward(basic_string<char>&)'
...
: 불행하게도이 g ++ 4.7.2로 컴파일되지 않습니다
template<typename T1, typename T2>
void foo(T1&& t1, T2&& t2)
{
pair<T1&&, T2&&> p(forward(t1), forward(t2)); // Capture parameters -- doesn't work
cout << p.first << "," << p.second << endl;
}
int main()
{
string s = "hey";
foo("hello", "world");
foo(1, 2);
foo(s, endl);
return 0;
}
은
위의 컴파일을 수행하기 위해 p를 선언하고 초기화하는 방법은 무엇입니까?