Heim > Backend-Entwicklung > C++ > Wie erreicht „std::make_unique' eine perfekte Weiterleitung in C?

Wie erreicht „std::make_unique' eine perfekte Weiterleitung in C?

Patricia Arquette
Freigeben: 2024-12-26 02:40:09
Original
319 Leute haben es durchsucht

How Does `std::make_unique` Achieve Perfect Forwarding in C  ?

make_unique und Perfect Forwarding

In C 11 gibt es keine integrierte std::make_unique-Funktion, die eine präzise Instanziierung eindeutiger Zeiger ermöglichen würde. Entwickler fanden die Syntax

std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
Nach dem Login kopieren

unnötig ausführlich und schlugen eine alternative Syntax vor:

auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
Nach dem Login kopieren

Dieser Ansatz vereinfacht die Erstellung eindeutiger Zeiger und reduziert die Codeduplizierung.

Die vorgeschlagene Implementierung von std::make_unique nutzt die perfekte Weiterleitung über std::forward, um Argumente an den Konstruktor zu übergeben. Durch die perfekte Weiterleitung wird sichergestellt, dass Funktionsparameter auf die effizienteste Weise übergeben werden und dabei ihr ursprünglicher Typ und ihre ursprüngliche Wertkategorie (z. B. L-Werte, R-Werte) erhalten bleiben.

In der make_unique-Implementierung ist die Syntax

std::forward<Args>(args)...
Nach dem Login kopieren

kann wie folgt interpretiert werden:

  • std::forward: Typ Merkmale, die die Wertkategorie (z. B. L-Wert oder R-Wert) von Argumenten ableiten.
  • args...: Erweiterung der variablen Argumente in einzelne Parameter.

Zusammen erreichen sie Perfektion Weiterleitung, indem sichergestellt wird, dass Argumente mit der richtigen Wertkategorie und dem richtigen Typ an den Konstruktor übergeben werden.

Herb Sutter, Vorsitzender von Das C-Standardisierungskomitee hat das Versehen anerkannt, std::make_unique nicht in C 11 aufgenommen zu haben, und hat angegeben, dass es in einer zukünftigen Version hinzugefügt wird. Die vorgeschlagene Implementierung ist identisch mit der in der Frage angegebenen.

Mit der Einführung von C 14 wurde std::make_unique standardisiert und stellte die erforderliche prägnante Syntax zum Erstellen eindeutiger Zeiger bereit.

Das obige ist der detaillierte Inhalt vonWie erreicht „std::make_unique' eine perfekte Weiterleitung in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage