C 11에서 make_unique의 사용자 정의 구현
make_unique는 C 14에 도입된 유틸리티 함수로 동적으로 할당된 인스턴스로 Unique_ptr 개체를 생성합니다. . 이는 원시 포인터가 바람직하지 않고 소유권 관리가 필요한 경우에 유용합니다. 그러나 컴파일러가 make_unique를 지원하지 않는 경우 사용자 정의 템플릿 함수를 사용하여 쉽게 구현할 수 있습니다.
make_unique를 작성하려면 다음 템플릿 선언이 사용됩니다.
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );</code>
이 템플릿은 유형 T 및 가변 개수의 인수 Args. 다음 구현은 제공된 인수를 사용하여 구성된 새 T 인스턴스로 Unique_ptr 객체를 생성합니다.
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
std::forward
make_unique의 이 사용자 정의 구현은 표준 버전의 동작을 모방하므로 C에서 Unique_ptr 객체를 생성할 수 있습니다. make_unique가 지원되지 않는 11가지 환경.
위 내용은 향상된 소유권 관리를 위해 C 11에서 `make_unique`를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!