자세한 내용을 줄이고 유형 안전성을 돕는 이점에도 불구하고, std::make_unique는 C 11 표준에 포함되지 않았습니다. C 표준화 위원회 의장인 Herb Sutter는 이러한 누락이 실수 때문이라고 생각합니다.
사용자 정의 make_unique 구현에서 std::forward< Args>(args)...는 인수를 T의 생성자에게 완벽하게 전달하는 데 사용됩니다. 이 기술은 인수가 가장 최적의 rvalue(또는 lvalue) 참조.
std::forward가 lvalue 참조에 적용되면 이를 rvalue 참조로 변환하여 생성자가 rvalue에 직접 바인딩할 수 있습니다. 반대로 std::forward가 rvalue 참조에 적용되면 아무 작업도 수행하지 않습니다.
make_unique 구현은 새 T로 메모리를 할당한 다음 호출하여 T의 새 인스턴스를 생성합니다. 전달된 인수가 있는 생성자입니다. 완벽한 전달을 사용하면 불필요한 복사본이나 불필요한 임시 개체를 방지할 수 있습니다.
C 11의 일부는 아니지만 std::make_unique는 고유 포인터를 간결하게 생성하기 위해 널리 채택되는 규칙이 되었습니다. 코드 가독성을 높이고 유형 처리를 단순화하며 효율적인 리소스 관리를 보장합니다. C 14에 포함될 것으로 예상되는 것은 현대 C 프로그래밍에서의 중요성을 더욱 강조합니다.
위 내용은 C 11에서 `std::make_unique`가 누락된 이유는 무엇이며 Perfect Forwarding은 어떻게 기능을 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!