草庐IT

c++ - 定义明确的缩小铸型

我正试图想出一个优雅地忽略丢失数据的缩小转换(通用解决方案)。在VisualStudio中,丢失数据的缩小转换会触发“运行时检查失败#1”。我不想关闭它,而是尝试实现一个narrow_cast,它可以优雅地进行缩小转换并且不会触发运行时检查。VisualStudio建议:charc=(i&0xFF);所以我从这个开始,想出了这个丑陋的解决方案:templatestructnarrow_mask{staticconstTvalue=T(0xFFFFFFFFFFFFFFFF);};templateTnarrow_cast(constU&a){returnstatic_cast(a&narr