18#ifndef __FPSDK_COMMON_TYPES_HPP__
19#define __FPSDK_COMMON_TYPES_HPP__
46template <typename T, typename = typename std::enable_if<std::is_enum<T>::value, T>::type>
47constexpr typename std::underlying_type<T>::type
EnumToVal(T enum_val)
49 return static_cast<typename std::underlying_type<T>::type
>(enum_val);
68constexpr std::size_t
NumOf(
const T& arr)
70 return sizeof(arr) /
sizeof(arr[0]);
88 return std::tuple_size<T>{};
110# define UNUSED(thing) (void)thing
115# define STRINGIFY(x) _STRINGIFY(x)
120# define CONCAT(a, b) _CONCAT(a, b)
125# define SIZEOF_FIELD(_type_, _member_) sizeof((((_type_*)NULL)->_member_))
130# define _STRINGIFY(x) #x
131# define _CONCAT(a, b) a##b
Base class to prevent copy or move.
constexpr std::size_t NumOf()
Get number of elements in array type.
constexpr std::underlying_type< T >::type EnumToVal(T enum_val)
Convert enum class constant to the underlying integral type value.