Первое замечание: !
, &&
и ||
не являются функциями. Они встроены в операторы, и поэтому вы не можете хранить их на карте. Однако на карте можно хранить функции, которые применяют эти операторы к своим параметрам.
Для бинарных операторов, работающих на логических значениях, это так просто:
#include <iostream>
#include <functional>
#include <map>
std::map<int,std::function<bool(bool,bool)>> my_map{
{1, [](bool a,bool b){ return a && b; } }
};
int main(void) {
std::cout << my_map[1](true,true);
}
Однако это немного сложнее, если операторы должны работать с произвольными типами, и неясно, почему вы хотите смешивать унарные (!
) и бинарные операторы.