在C ++引言第5版p 578中,据说
我们不能将重载函数的名称存储在函数类型
的对象中
提供的代码是:
int add (int i, int j) {return i+j;}
Sales_data add (const Sales_data&, const Sales_data&);
map <string, function <int(int, int)>>binops;
binops.insert ({"+", add}); // error : which add ?
我不明白为什么编译器无法告诉哪个添加函数要插入到给定的映射中:add
将Sales_data&
作为参数与创建映射的函数签名不匹配我希望编译器能够告诉插入到地图中的函数是int add (int i, intj) {return i+j;}
为什么编译器不知道呢?