참조로 std::async에 인수 전달 시의 비호환성
const가 아닌 참조를 std에 대한 인수로 전달할 수 없음: :async는 개발자를 당황하게 만들었습니다. 다음 예를 고려하십시오.
<code class="cpp">#include <functional> #include <future> void foo(int& value) {} int main() { int value = 23; std::async(foo, value); }</code>
컴파일러는 다음 코드와 함께 오류를 보고합니다.
error: no type named ‘type’ in ‘class std::result_of<void (*)(int)>()’
std::reference_wrapper에 인수를 포함하면 문제가 해결되지만 기본 코드에 대한 질문이 제기됩니다. 메커니즘.
값 기반 인수 전달에 대한 추론
std::async의 디자인은 의도적으로 모든 인수를 값으로 전달하도록 기본 설정되어 있습니다. 이 선택은 인수 복사본이 매달리거나 경쟁 조건을 나타낼 수 없으므로 안전을 보장합니다.
비상수 참조 매개변수 처리
그러나 인수를 전달하는 시나리오가 있습니다. 비 const 참조가 필요합니다. 이것이 std::ref가 작동하는 곳입니다. std::ref를 사용하면 개발자는 잠재적인 결과에 대한 이해를 인정하면서 non-const 참조를 전달하는 위험한 의미 체계를 명시적으로 선택할 수 있습니다.
위 내용은 `std::async`에 상수가 아닌 참조를 전달할 수 없는 이유는 무엇이며 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!