Ist es in Ordnung, dass dasselbe Objekt zweimal hintereinander „rvalue-used“ wird?C++

Programme in C++. Entwicklerforum
Anonymous
 Ist es in Ordnung, dass dasselbe Objekt zweimal hintereinander „rvalue-used“ wird?

Post by Anonymous »

Die allgemeine Auffassung ist, dass sich ein Objekt, sobald es „verschoben“ wurde, in einem „gültigen, aber nicht spezifizierten Zustand“ befindet. Dann ist es nicht sicher, es zu verwenden, bis es erneut zugewiesen wird. Wie wäre es, wenn es nur „rvalue-used“ wäre?
Betrachten Sie den folgenden Code. Ist es sicher, std::get zweimal mit einem Rvalue-Verweis auf dasselbe Tupel aufzurufen?

Code: Select all

template 
void func(Tuple && tuple) {
f1(std::get(std::forward(tuple));
f2(std::get(std::forward(tuple));
}

int main() {
func(std::make_tuple(std::string(), std::string()));
}
Ein anderer Fall: Aufruf der && qualifizierten Memberfunktion.

Code: Select all

template 
void func(Optional && optional) {
if (optional.has_value()) {
f1(*std::forward(optional));//T && std::optional::operator*() &&
}
auto b = optional.has_value();//

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post