Конвертация строковых литералов-идентификаторов в числа в compile time?
Существует ли на C++11 compile-time средство, которое конвертирует строковые литералы-идентификаторы в числовые идентификаторы?
Допустим, хочется иметь такие идентификаторы:
"MSG_ADD_OBJECT"
"MSG_REMOVE_OBJECT"
и т.п.
Но выделять память на строки не хочется, было бы здорово иметь такой макрос, который на этапе компиляции превратит строки в уникальные числа:
int64 a = NUM_ID("MSG_ADD_OBJECT");
int64 b = NUM_ID("MSG_REMOVE_OBJECT");
Если такое средство есть, то какая вероятность коллизии?