|
@@ -298,6 +298,14 @@ public:
|
|
|
template <typename First, typename... Other>
|
|
template <typename First, typename... Other>
|
|
|
void Pop(First& first_value, Other&... other_values);
|
|
void Pop(First& first_value, Other&... other_values);
|
|
|
|
|
|
|
|
|
|
+ template <typename T>
|
|
|
|
|
+ T PopEnum() {
|
|
|
|
|
+ static_assert(std::is_enum_v<T>, "T must be an enum type within a PopEnum call.");
|
|
|
|
|
+ static_assert(!std::is_convertible_v<T, int>,
|
|
|
|
|
+ "enum type in PopEnum must be a strongly typed enum.");
|
|
|
|
|
+ return static_cast<T>(Pop<std::underlying_type_t<T>>());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @brief Reads the next normal parameters as a struct, by copying it
|
|
* @brief Reads the next normal parameters as a struct, by copying it
|
|
|
* @note: The output class must be correctly packed/padded to fit hardware layout.
|
|
* @note: The output class must be correctly packed/padded to fit hardware layout.
|