prime/include/rstl/optional_object.hpp

30 lines
557 B
C++

#ifndef _RSTL_OPTIONAL_OBJECT_HPP
#define _RSTL_OPTIONAL_OBJECT_HPP
#include "types.h"
#include "rstl/construct.hpp"
namespace rstl {
template < typename T >
class optional_object {
public:
optional_object() : x4_valid(false) {}
optional_object(const T& item) : x0_item(item), x4_valid(true) {}
~optional_object() { clear(); }
T& data() { return x0_item; }
operator bool() const { return x4_valid; }
void clear() {
rstl::destroy(&x0_item);
x4_valid = false;
}
private:
T x0_item;
bool x4_valid;
};
} // namespace rstl
#endif