> 백엔드 개발 > C++ > C 11에서 `std::make_unique`가 누락된 이유는 무엇이며, 구현 시 Perfect Forwarding은 어떻게 작동합니까?

C 11에서 `std::make_unique`가 누락된 이유는 무엇이며, 구현 시 Perfect Forwarding은 어떻게 작동합니까?

DDD
풀어 주다: 2024-12-30 00:30:12
원래의
587명이 탐색했습니다.

Why is `std::make_unique` Missing in C  11, and How Does Perfect Forwarding Work in its Implementation?

Make_unique 및 완벽한 전달

Q: C 11 표준 라이브러리에 중앙 집중식 make_unique 기능이 없는 이유는 무엇입니까?

많은 사람들이 고유 포인터가 불편합니다. 예를 들면 다음과 같습니다.

std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
로그인 후 복사

다음과 같은 세련된 기능이 선호됩니다.

auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
로그인 후 복사

Q: 여기 make_unique 구현 시도가 있지만 std::forward 관련 내용이 손상된 것 같습니다. 무엇을 하고 있으며 어떻게 사용되나요?

template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
로그인 후 복사

A: C 11에서 std::make_unique가 누락된 것은 실수로 인정되어 C 14에 추가되었습니다.

std::forward(args) 표현식은 완벽한 전달을 사용하여 ...args 인수에 대한 인위적인 참조를 생성합니다. T(std::forward(args)...)의 새 표현식으로 전달되고 lvalue와 rvalue에 대한 구성 동작을 통합합니다.

위 내용은 C 11에서 `std::make_unique`가 누락된 이유는 무엇이며, 구현 시 Perfect Forwarding은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿