 
 
 
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
 
![[Silicon Surf]](http://www.sgi.com/Images/Icon/surf.gif) 
![[STL Home]](stl_home.gif) 
Copyright © 
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
webmaster@www.sgi.com