这种函数重载的思路在STL的算法中非常常见, 各种算法都会进行复杂的迭代器判断, 这类分支很多发生在编译时所以不会对执行效率有太大影响....其实现原理更复杂, 但是将原先多个适配器(例如bind1st, bind2nd)整合到一起了, 一个适配器可以实现下面四种功能, 且可以选择要绑定哪些参数, 参数顺序, 参数数量, 返回类型...非常自由...val了, 因此参数列表就减少了一个项, 继续递归下去直到只剩一个参数
hash_val(seed, args...);
}
// 至此为止是模板递归的最后一层, 只剩下一个参数时进入
template...当时算法能询问的问题很少, 且需要类的编写者对自己的类都去特化一份如下的空结构, 非常繁琐.
这里默认最泛化的类所有成员都是重要的(trivial项都是false), POD是指无函数的结构体....例如is_void::value会回答当前询问的类是否为空, 值是0或1.