1
1

optional.hpp 461 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. template<class T>
  3. class Optional
  4. {
  5. public:
  6. Optional(): _empty(true)
  7. { };
  8. Optional(T v): _empty(false), _value(v)
  9. { }
  10. T value() const
  11. { return _value; }
  12. bool isPresent() const
  13. { return !_empty; }
  14. bool isAbsent() const
  15. { return _empty; }
  16. static Optional<T> empty()
  17. { return Optional<T>(); }
  18. private:
  19. bool _empty;
  20. T _value;
  21. };