我正在阅读C ++入门,我的问题来自14.8.3可调用对象和function
。在重载函数和function
部分中,它说:
我们不能(直接)将重载函数的名称存储在function
类型的对象中:
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
非常明显,至少对于人类我猜(只有一个调用签名匹配),但为什么编译器无法分辨?这是因为function
类型如何在下面起作用?是否可以在以后的标准中修复?
感谢。