У меня есть следующий макрос, и я хотел преобразовать его в constexpr
, так как, очевидно, это лучший подход:
#define INT32BE(x) (x[0] << 24 | x[1] << 16 | x[2] << 8 | x[3])
Попытка:
template <typename T>
constexpr auto Int32BE(T array [])
{
return array[0] << 24 | array[1] << 16 | array[2] << 8 | array[3];
}
Это должно быть используется следующим образом:
const auto address = Int32BE(data.Address);
Определение Address
выглядит следующим образом:
UCHAR Address[4];
Это работает, как ожидалось, но я не совсем уверен, как это должно быть записанным.
Вопрос:
Это constexpr
для чтения 32-разрядного целого числа из массива, записанного правильно?