#include <iostream>
#include <boost/bind.hpp>
struct FCall3Templ {
template<typename ARG1, typename ARG2>
ARG1 operator()(ARG1 arg1, ARG2 arg2) {
return arg1+arg2;
}
};
int main() {
boost::bind<int>(FCall3Templ(), 45, 56)(); // call 1
boost::bind<double>(FCall3Templ(), 45.0, 56.0)(); // call 2
return 0;
}
我发布的代码与您可以在此处找到的代码相同。
我对元编程、boost::bind 和运算符重载相对较新,但我不明白这段代码在代码的某些部分中做了什么,我有这个问题:
- 为什么
operator()
在不指定该运算符的标签的情况下使用?什么是重载/定义? - 我应该如何使用赋值来捕获和存储 2 个调用返回的值
T var = ?
? ()
两个调用中最后一个都是空的事实是什么意思?是接线员的电话吗?那么这种技术/操作符的名称是什么?- 为什么以这种方式使用运算符重载而不是仅使用方法?
谢谢。