const T & data() const throw() { return value; }
bool empty() const throw() { return !is_set; }
void reset() throw() { is_set = false; }
const T & data() const throw() { return value; }
bool empty() const throw() { return !is_set; }
void reset() throw() { is_set = false; }