使用默认值而不是异常来提升 numeric_cast<> ?

2024-01-09

每当升压时numeric_cast<>转换失败,会抛出异常。 boost 中是否有类似的模板可以让我指定默认值,或者在这种情况下捕获异常是我唯一能做的事情?

我不太担心所有额外异常处理的性能,但我宁愿使用标准模板也不愿编写无用的包装函数。另外,从以往的经验来看,我觉得boost很可能确实有我想到的东西,只是我还没有找到而已。


The numeric_cast函数只是调用boost::numeric::converter http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter.html具有默认参数的模板类。其中一个论点是OverflowHandler http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter_policies.html#oh,默认值为def_overflow_handler http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter_policies.html#oh_def,但您可以指定silent_overflow_handler http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter_policies.html#oh_silent来抑制异常。

然后指定FloatToIntRounder http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter_policies.html#f2i如果输入参数超出您所需的范围,该参数将提供您所需的默认值。论据是normally用于提供从浮点类型舍入的整数,但您实际上可以将其用于任何您想要的用途。更多信息以及描述事件顺序的代码,请访问converter文档 http://www.boost.org/doc/libs/1_34_0/libs/numeric/conversion/doc/converter.html.

据我所知,Boost 没有您想要的东西,但它为您提供了自己构建它的设施。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用默认值而不是异常来提升 numeric_cast<> ? 的相关文章

随机推荐