The C++ library has two classes which fill mostly the same function. Both Status and Result<> are used to express a recoverable error in lieu of exceptions. Result<> is slightly more ergonomic in C++, but our binding infrastructures assume Status based APIs.
>From the discussion in the sync call, it seems reasonable to require that: Public APIs which are likely to be directly wrapped in a binding should not use Result<> to the exclusion of Status. An equivalent Status API should always be provided for ease of binding.