Пользователь
constexpr uint32_t CalcCRC32Impl(uint32_t prevCrc, const char* str) { return !(*str) ? prevCrc : CalcCRC32Impl((prevCrc >> 8) ^ Crc32Table[(prevCrc ^ *str) & 0xff], str + 1); } constexpr unsigned int CalcCRC32(const char* str) { return CalcCRC32Impl(0xffffffff, str) ^ 0xffffffff; }
template<int crc> void PrintCrc() { std::cout << crc << std::endl; } PrintCrc<CalcCRC32("123")>();
Проверка:
Печатает ожидаемое 884863d2.
Проверял на gcc 4.7. Таблица Crc32Table такая же, как в статье.