blob: c8743e6d55b558ef3e4c201448a319885bfe52fe [file] [log] [blame]
#pragma once
namespace c10 {
template <typename T>
class OptionalRef {
public:
OptionalRef() : data_(nullptr) {}
OptionalRef(const T* data) : data_(data) {
TORCH_INTERNAL_ASSERT_DEBUG_ONLY(data_);
}
OptionalRef(const T& data) : data_(&data) {}
bool has_value() const {
return data_ != nullptr;
}
const T& get() const {
TORCH_INTERNAL_ASSERT_DEBUG_ONLY(data_);
return *data_;
}
operator bool() const {
return has_value();
}
private:
const T* data_;
};
} // namespace c10