|  | Home | Libraries | People | FAQ | More | 
      At the very minimum for optional<T>
      to work with a minimum interface it is required that T
      has a publicly accessible no-throw destructor. In that case you need to initialize
      the optional object with function emplace() or use InPlaceFactories.
      Additionally, if T is Moveable, optional<T>
      is also Moveable and can be
      easily initialized from an rvalue of type T
      and be passed by value. Additionally, if T
      is Copyable, optional<T> is
      also Copyable and can be easily
      initialized from an lvalue of type T.
    
      T is
      not required to be Default
      Constructible.