0
어떻게 든 C++ 가변 람다 (lambda)로 지연 평가를 구현해야합니다. 다음 코드가 올바르게 작동하는지 확실하지 않습니다.람다에 대한 완벽한 forward variadic 인수
template <typename... ArgsT>
auto lazy_pack(ArgsT&& ... args) {
auto T = [&](bool condition) {
if(condition == false) return;
Foo v(std::forward<ArgsT>(args)...);
v.do_work();
};
return T;
}
질문은 주어진 인수 목록을 어떻게 캡처하여 다른 템플릿 개체로 완벽하게 전달합니까? 위의 예제는 컴파일되지만, 매달려있는 참조가 발생할지 걱정됩니다. 또 다른 방법은 복사를 통해 인수를 캡처하는 것입니다 그들과는 개체에 전달 : 나는 당신이 찾고있는,하지만 어쩌면 다음 코드는 당신에게 도움이 될 수 있습니다 무엇을 가지고 확실하지 않다
template <typename... ArgsT>
auto lazy_pack(ArgsT&& ... args) {
auto T = [=](bool condition) {
if(condition == false) return;
Foo v(args...);
v.do_work();
};
return T;
}
'lazy_pack'이 반환되고 원래의 인수가 잠재적으로 삭제 된 후에도 람다가 실제로 호출 될 수 있음을 확인하고 인수 값을 사용하는 방법을 알지 못합니다. –