람다를 호출하고 매개 변수를 별도로 전달하고 싶습니다.
예 :
#include <memory>
template<typename T, typename... TS>
T call(T (*)(TS...) f, TS&&... args) {
return f(std::forward<TS...>(args...));
}
따라서이 함수를 다음과 같이 호출하고 싶습니다.
call([](auto arg1, auto arg2){
std::cout << arg1 << ", " << arg2 << std::endl;
}, 1, 2);
이것은 출력되어야합니다 1, 2
.
당신은 ...
모든 곳을 때리고 그것이 효과가 있기를 바랄 수는 없습니다 . 매개 변수 팩의 작동 방식을 이해 하고 올바른 구문을 사용합니다. 또한 함수 call()
는를 반환해서는 안됩니다 T
. auto
반환 유형에 사용 합니다. 그리고 T
이미 전체 유형이므로 f
쓰면 안됩니다 T (*)(TS...)
. 다음은 고정 버전입니다.
template<typename T, typename... TS>
auto call(T f, TS&&... args) {
return f(std::forward<TS>(args)...);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다