#pragma once #include #include #include #include #include namespace vamp_zero { enum class error_code : std::int32_t { OK = 0, INVALID_ARGUMENT = 1, NOT_FOUND = 2, UNAVAILABLE = 3, PERSISTENCE = 4, CONFLICT = 5, INTERNAL = 6, }; auto make_error(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> modulus::error; auto fail_void(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected; template auto fail(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected; } template auto vamp_zero::fail(vamp_zero::error_code code, std::string message, modulus::source_location location) -> std::expected { return modulus::fail(vamp_zero::make_error(code, std::move(message), location)); }