NoS*_*tAl 3 c++ stl template-meta-programming
在实现构造函数采用的模板类时:
std::function<bool(const T&)>)std::binary_function<bool,bool,bool> 我将用于累积从1)到某个值的矢量应用的结果.我希望能够使用std::plus()和std::multiplies()作为第二个模板参数,但问题是,根据函数我需要一个相应的中性元素(对于std累积初始值).对于AND(std::multiplies)我需要true(又名1),因为OR(std::plus)我需要false(又名0).我知道我可以专门化模板并解决问题,但我想知道是否有办法为内置STL函数获取中性元素.
如果你正在使用gcc,你可以使用__gnu_cxx :: identity_element,这正是你所要求的.
如果你不是,我不认为有一个通用的解决方案,好像有,gcc不会实现自己的 - 你可能只是重写他们的实现(实际上只是几个模板专业化,如你所料).
编辑:此源代码位于此文件的第78-98行.