|
|
|
@ -4,7 +4,6 @@ |
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
#include <cassert> |
|
|
|
#include <cstddef> |
|
|
|
#include <type_traits> |
|
|
|
#include <utility> |
|
|
|
@ -267,7 +266,7 @@ public: |
|
|
|
ResultVal(ResultCode error_code = ResultCode(-1)) |
|
|
|
: result_code(error_code) |
|
|
|
{ |
|
|
|
assert(error_code.IsError()); |
|
|
|
ASSERT(error_code.IsError()); |
|
|
|
UpdateDebugPtr(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -330,7 +329,7 @@ public: |
|
|
|
*/ |
|
|
|
template <typename... Args> |
|
|
|
void emplace(ResultCode success_code, Args&&... args) { |
|
|
|
assert(success_code.IsSuccess()); |
|
|
|
ASSERT(success_code.IsSuccess()); |
|
|
|
if (!empty()) { |
|
|
|
GetPointer()->~T(); |
|
|
|
} |
|
|
|
@ -362,7 +361,6 @@ public: |
|
|
|
|
|
|
|
/// Asserts that the result succeeded and returns a reference to it. |
|
|
|
T& Unwrap() { |
|
|
|
// TODO(yuriks): Should be a release assert |
|
|
|
ASSERT_MSG(Succeeded(), "Tried to Unwrap empty ResultVal"); |
|
|
|
return **this; |
|
|
|
} |
|
|
|
@ -389,12 +387,12 @@ private: |
|
|
|
} |
|
|
|
|
|
|
|
const T* GetPointer() const { |
|
|
|
assert(!empty()); |
|
|
|
ASSERT(!empty()); |
|
|
|
return static_cast<const T*>(static_cast<const void*>(&storage)); |
|
|
|
} |
|
|
|
|
|
|
|
T* GetPointer() { |
|
|
|
assert(!empty()); |
|
|
|
ASSERT(!empty()); |
|
|
|
return static_cast<T*>(static_cast<void*>(&storage)); |
|
|
|
} |
|
|
|
}; |
|
|
|
|