dimanche 1 mars 2015

Using CRC32 algorithm to hash string at compile-time


Basically I want in my code to be able to do this:



Engine.getById(WSID('some-id'));


Which should get transformed by



Engine.getById('1a61bc96');


just before being compiled into asm. So at compile-time.


This is my try



constexpr int WSID(const char* str) {
boost::crc_32_type result;
result.process_bytes(str,sizeof(str));
return result.checksum();
}


But I get this when trying to compile with MSVC 18 (CTP November 2013)



error C3249: illegal statement or sub-expression for 'constexpr' function


How can I get the WSID function, using this way or any, as long as it is done during compile time?


Tried this: Compile time string hashing



warning C4592: 'crc32': 'constexpr' call evaluation failed; function will be called at run-time



Aucun commentaire:

Enregistrer un commentaire