| 
|   | Result (Status s) | 
|   | Implicit constructor to allow returning a status in functions.  
  | 
|   | 
| template<typename U, typename E = typename std::enable_if<                std::is_constructible<T, U>::value && std::is_convertible<U, T>::value &&                !std::is_same<typename std::remove_reference<                                  typename std::remove_cv<U>::type>::type,                              Status>::value>::type>  | 
|   | Result (U &&t) | 
|   | Implicit constructor to allow returning a value in functions.  
  | 
|   | 
| bool  | has_value () const | 
|   | Check if this has a value or not.  
  | 
|   | 
| const Status &  | status () const & | 
|   | Get the status (if present).  
  | 
|   | 
| Status &&  | status () && | 
|   | Move the status (if present).  
  | 
|   | 
| T &  | value () | 
|   | Get the value (if present).  
  | 
|   | 
template<typename T>
class adbc::driver::Result< T >
A wrapper around a value, or an error. 
We could probably do better by using a library like std::expected, but this will suffice for now. There doesn't seem to be a reasonably maintained std::expected backport.