通过价值保证有效的bool传递?

时间:2017-05-13 20:50:32

标签: c++ boolean

如果sizeof(bool) == 1那么传递值是有效的,因为bool适合寄存器(假设某些标准调用约定)。但是sizeof(bool)是实现定义的。那么bool总是保证在通过值而不是通过引用传递时更有效吗? sizeof(bool)上的上限是否有任何保证?

1 个答案:

答案 0 :(得分:6)

C ++和C标准并非旨在保护您免受恶意攻击。

这很简单。您必须相信您的实现不会尝试变坏。如果是这样,请不要使用它。

对于这种特殊情况:任何使复制内置整数类型都很昂贵的实现,即使在技术上符合要求,也会破坏大量现实代码的性能,因此可能被认为是恶意的。

所以要明确答案:不,标准不能保证,因为这超出了他们的范围。但是,它受到现实世界限制的保证。