Ich kann eine Adresse eines rvalue nehmen, indem ich an eine Referenz binde (die, wie ich verstehe, nur durch einen lvalue bezeichnet werden kann).Gibt es einen rvalue, von dem ich direkt eine Adresse nehmen kann?
Gibt es eine Möglichkeit, Rvalue zu bekommen, dass ich direkt eine Adresse von (wie &(<rvalue>)
wäre ein gültiger Ausdruck, ohne Überschreiben operator&()
) nehmen könnte?
Oder vielleicht ist das mindestens möglich durch "Bindung" an einen anderen rvalue? (Dies scheint nicht der Fall zu sein, da wir nur an Referenzen binden können, die lvalues sind, siehe oben. Aber vielleicht fehlt mir hier ein ähnliches Konzept.)
Die allgemeinere Frage, die ich versuche Die Antwort lautet, ob das Folgende zutrifft: RWerte entsprechen genau einer Menge von Ausdrücken, von denen man direkt eine Adresse nehmen kann, mit Ausnahme von lvalue-Bitfeldern und vielleicht einigen anderen solchen "speziellen" Arten von lvalues.
Wenn Ihr rvalue nicht in einem Lvalue verborgen ist, können Sie die Adresse nicht als '&' verwenden, da dies der Definition von "lvalue reference" widerspricht. – AndyG
Sprachanwalts ist ein Tag? Lass mich lachen – arynaq
Betrachte ['std :: addressof()'] (http://en.cppreference.com/w/cpp/memory/addressof), was das Problem von Klassen betrifft, die 'operator &' außer Kraft setzen. –