error_or supports std::error_code
add error_or::get_ptr to retrieve the value without throwing
rename error_or::value to get