Assignable
  | 
  | 
| Category: utilities | 
Component type: concept | 
Description
A type is Assignable if it is possible to copy objects of that type and
to assign values to variables.
Refinement of
Associated types
Notation
| 
X
 | 
A type that is a model of Assignable
 | 
| 
x, y
 | 
Object of type X
 | 
Definitions
Valid expressions
| 
Name
 | 
Expression
 | 
Type requirements
 | 
Return type
 | 
| 
Copy constructor
 | 
X(x)
 | 
 
 | 
X
 | 
| 
Copy constructor
 | 
X x(y);
X x = y;
 
 | 
 
 | 
 
 | 
| 
Assignment
 | 
x = y [1]
 | 
 
 | 
X&
 | 
| 
Swap
 | 
swap(x,y)
 | 
 
 | 
void
 | 
Expression semantics
| 
Name
 | 
Expression
 | 
Precondition
 | 
Semantics
 | 
Postcondition
 | 
| 
Copy constructor
 | 
X(x)
 | 
 
 | 
 
 | 
X(x) is a copy of x [2]
 | 
| 
Copy constructor
 | 
X(x)
 | 
 
 | 
 
 | 
X(x) is a copy of x [2]
 | 
| 
Copy constructor
 | 
X x(y);
X x = y;
 
 | 
 
 | 
 
 | 
x is a copy of y [2]
 | 
| 
Assignment
 | 
x = y [1]
 | 
 
 | 
 
 | 
x is a copy of y [2]
 | 
| 
Swap
 | 
swap(x,y)
 | 
 
 | 
Equivalent to
{
  X tmp = x; 
  x = y; 
  y = tmp; 
}
 | 
 
 | 
Complexity guarantees
Invariants
Models
Notes
[1]
One implication of this requirement is that a const type is not Assignable.
For example, const int is not Assignable: if x is declared to be
of type const int, then x = 7 is illegal.  Similarly, the type
pair<const int, int> is not Assignable.
[2]
The reason this says "x is a copy of y", rather than
"x == y", is that operator== is not necessarily defined: equality
is not a requirement of Assignable.  If the type X is
EqualityComparable as well as Assignable, then a copy of x 
should compare equal to x.
See also
DefaultConstructible
 
Copyright © 
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation