c – 为std :: multiply和std :: plus获取一个中性元素

c – 为std :: multiply和std :: plus获取一个中性元素,第1张

概述在实现构造函数采用的模板类时: >函数向量(函数类型为std :: function< bool(const T&)>) > std :: binary_function< bool,bool,bool>我将用于累积从1)到某个值的矢量应用的结果. 我希望能够使用std :: plus()和std :: multiplies()作为第二个模板参数,但问题是根据函数我需要一个相应的中性元素(对于st 在实现构造函数采用的模板类时:

>函数向量(函数类型为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不会实现自己的 – 你可能只是重写他们的实现(实际上只是几个模板专业化,因为你预期).

编辑:此源代码位于this file的第78-98行.

总结

以上是内存溢出为你收集整理的c – 为std :: multiply和std :: plus获取一个中性元素全部内容,希望文章能够帮你解决c – 为std :: multiply和std :: plus获取一个中性元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存