2014-07-15 16 views
5

Scott Meyers says (für Parameter-Vorlagen funktionieren):Warum hat C++ keine konstante universelle Referenz?

Universal-Referenzen können nur in der Form "T&&" auftreten! Selbst die einfache Addition eines const Qualifier ist ausreichend, um die Interpretation von "&&" als universelle Referenz zu deaktivieren.

Warum hat C++ keine const Universalreferenz? Jeder technische Grund?

+0

Da die Art und Weise, wie Sie eine Const rhand-Referenz verwenden, identisch mit der Art und Weise ist, wie Sie in den meisten Fällen eine Consthand-Referenz verwenden. – IdeaHat

Antwort

8

Was wäre eine konstante universelle Referenz? Es wäre eine Referenz, die nicht geändert werden kann. Und das Verschieben von einer R-Referenz ist eine Modifikation. Wenn es so etwas wie eine const universelle Referenz gibt, ist es einfach const T&.

+0

Wenn es sinnlos ist, warum Compiler verbietet 'const T &&'? Sollte es nicht verboten sein? –

+3

@ccsadegh Es ist nicht nutzlos, Sie könnten es in einigen seltenen und komplizierten Fällen von Überladung Auflösung brauchen, um Mehrdeutigkeit zu entfernen. Es ist einfach nicht nützlich für die Bildung einer "const universal reference". –

Verwandte Themen