|  | Home | Libraries | People | FAQ | More | 
          This library allows the template parameter T
          to be of reference type: T&, and to some extent, T const&.
        
However, since references are not real objects some restrictions apply and some operations are not available in this case:
          Also, even though optional<T&> treats it wrapped pseudo-object
          much as a real value, a true real reference is stored so aliasing will
          ocurr:
        
optional<T&> will copy the references but
              all these references will nonetheless refer to the same object.
            | ![[Caution]](../../../../../../doc/src/images/caution.png) | Caution | 
|---|---|
| On compilers that do not conform to Standard C++ rules of reference binding, some operations on optional references are disabled in order to prevent subtle bugs. For more details see Dependencies and Portability section. | 
Rvalue references and lvalue references to const have the ability in C++ to extend the life time of a temporary they bind to. Optional references do not have this capability, therefore to avoid surprising effects it is not possible to initialize an optional references from a temporary. Optional rvalue references are disabled altogether. Also, the initialization and assignment of an optional reference to const from rvalue reference is disabled.
const int& i = 1; // legal optional<const int&> oi = 1; // illegal