Was sind einige Möglichkeiten, decltype(auto)?

In c++14 den decltype(auto) idiom eingeführt.

In der Regel seine Verwendung ist für ermöglichen auto Erklärungen zur Verwendung der decltype Regeln, die auf dem gegebenen Ausdruck.

Suche für Beispiele von "guten" Gebrauch der Redewendung kann ich nur denken, Dinge wie die folgenden (von Scott Meyers), nämlich für eine Funktion Rückgabetyp Abzug:

template<typename ContainerType, typename IndexType>                //C++14
decltype(auto) grab(ContainerType&& container, IndexType&& index)
{
  authenticateUser();
  return std::forward<ContainerType>(container)[std::forward<IndexType>(index)];
}

Gibt es andere Beispiele, wo dieses neue feature sinnvoll ist?

dieser post im Grunde schlage vor, zu versuchen zu vermeiden, dieses idiom, weil, wenn Sie es verwenden, geben Sie weniger Optionen zur Optimierung Ihres Compilers stackoverflow.com/a/20092875/2485710
Ich habe einmal verwendet decltype(auto) für so etwas wie template<class U, V> decltype(auto) first(std::pair<U, V>& p) { return p.first; }, obwohl ich dann erkannte, dass ich hatte, zu verwenden return (p.first); was erstaunlicherweise funktioniert (aber IIRC ist dies sogar beabsichtigt).
nicht sicher, ob es über die Optimierung speziell, mehr Potenzial für Unfälle, wenn decltype(auto) können bewirken, dass etwas kopiert werden/verschoben werden, in dem deklarierten Objekt -, Zähler-Erwartung.

InformationsquelleAutor Nikos Athanasiou | 2014-06-08

Schreibe einen Kommentar