Идеальный генератор хеш-функций для функций

У меня есть набор функций C ++. Я хочу отобразить эти функции в хэш-таблице, что-то вроде:unordered_map<function<ReturnType (Args...)> , SomethingElse>, гдеSomethingElse&nbsp;не имеет отношения к этому вопросу.

Этот набор функций ранее известен, маленький (скажем, менее 50) и статический (не изменится).

Поскольку производительность поиска имеет решающее значение (должно быть выполнено вO(1)), Я хочу определить идеальную функцию хеширования.

Существует ли идеальный генератор хеш-функций для этого сценария?

Я знаю, что существуют совершенные генераторы хеш-функций (например,Gperf&nbsp;или жеCMPH) но так как я никогда не использовал их, я не знаю, подходят ли они для моего случая.

ПРИЧИНА:

Я пытаюсь разработать структуру, где, учитывая программу, написанную на C ++, пользователь может выбрать подмножествоF&nbsp;функций, определенных в этой программе.

Для каждогоf&nbsp;принадлежность кF, структура реализуетмемоизации&nbsp;стратегия: когда мы называемf&nbsp;с вводомiмы храним(i,o)&nbsp;внутри некоторой структуры данных. Итак, если мы собираемся позвонить сноваf&nbsp;сi, мы вернемсяo&nbsp;без повторного выполнения (дорогостоящего времени) вычисления.

«Уже вычисленные результаты» будут доступны для разных пользователей (возможно, в облаке), поэтому, если пользовательu1&nbsp;уже вычислилoпользовательu2&nbsp;сэкономит время на вычисленияf&nbsp;сi&nbsp;(используя ту же аннотацию до).

Очевидно, нам нужно хранить множество пар(f,inputs_sets)&nbsp;(гдеinputs_sets&nbsp;это уже вычисленный набор результатов, о котором я говорил ранее),это оригинальный вопрос: как мне это сделать?

Таким образом, использование «трюка перечисления», предложенного в комментариях к этому сценарию, могло бы стать решением, предполагая, что все пользователи используютточно такой же&nbsp;перечисление, что может быть проблемой: предположим, что наша программа имеетf1,f2,f3&nbsp;что, еслиu1&nbsp;хочет запомнить толькоf1&nbsp;а такжеf2&nbsp;(такF={f1,f2}), в то время какu2&nbsp;хочет запомнить толькоf3&nbsp;(такF={f3})? Решением излишней может быть перечисление всех функций, определенных в программе, но это может привести к огромным потерям памяти.