Use of '&&' (Double Ampersand) in C 11
C 11 introduced a new type of reference called an rvalue reference, indicated by the double ampersand symbol "&&".
What is an Rvalue Reference?
An rvalue reference is a reference that can bind to an rvalue, which is an expression or temporary value that is not assigned to a named variable. This is in contrast to lvalue references, which bind to named variables or objects.
Benefits of Rvalue References
Rvalue references provide several benefits, including:
-
Move Semantics: They allow for efficient "move" operations, which transfer resources from one object to another without copying.
-
Perfect Forwarding: They enable template functions to correctly forward arguments based on their rvalue/lvalue status.
Syntax and Usage
T&& var; // Declares an rvalue reference to T named 'var'
When to Use Rvalue References
Use rvalue references in the following scenarios:
-
Move Constructors and Operators: To define functions that can efficiently move resources from an rvalue.
-
Perfect Forwarding: To create generic functions that can handle rvalues and lvalues transparently.
-
Implicit Conversions: To allow rvalue references to bind to temporaries that result from implicit conversions.
Important Properties
-
Overload Resolution: Lvalue references are preferred for lvalues, while rvalue references are preferred for rvalues.
-
Implicit Binding: Rvalue references can bind to rvalues and temporaries without explicit conversion.
-
Value Category: Named rvalue references are lvalues, while unnamed rvalue references are rvalues.
The above is the detailed content of What are C 11 Rvalue References (&&) and How Are They Used?. For more information, please follow other related articles on the PHP Chinese website!
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn