인수 (매개 변수 팩)를 저장하고 인수를 다른 함수에 전달해야합니다.
그 결과 나는 람다를 사용할 수 없습니다. 그리고 좋은 선택은 std :: bind입니다.
그러나이 코드완벽한 전달을 사용하는 std :: bind operator() 호출
struct A{};
void test(A &&){}
int main()
{
A a;
test(move(a)); //work
bind(test,a)(); //compile fail; copy a to std::bind, pass a to test
}
표준에 따르면, 표준에 저장된 모든 변수 :: 바인드 기능을 할뿐만 좌변 통과됩니다에 대한
. (C++ 표준에서는 그게 무슨 뜻인지는 모르겠다.)
그리고 std :: bind와 함께 함수에서 rvalue 참조를 사용할 수 없다는 것을 의미합니다.
test(A &&)
을 test(A &)
으로 변경하는 것이 하나의 방법이지만이 방법은 프로젝트에만 적용됩니다. 또한 std :: thread로 테스트를 호출 할 필요가있을뿐만 아니라 일반 순차 호출로 테스트를 호출해야하는 경우에는 이상하게 만듭니다.
그래서이 문제를 해결할 방법이 있습니까?
* "나는 람다"를 사용할 수 없습니다 *, 당신은 그것에 대해 자세히 설명 할 수 있습니까? 그리고 당신이 언급하는 매개 변수 팩은 어디에 있습니까? –
@ NathanOliver 당신은'foo'에게 전화하는 걸 잊었습니다 –
@PiotrSkotnicki 좋은 지적입니다. 나는 그것을했고 그것은 장관적으로 실패했다. – NathanOliver