如果sizeof(bool) == 1
那么传递值是有效的,因为bool
适合寄存器(假设某些标准调用约定)。但是sizeof(bool)
是实现定义的。那么bool
总是保证在通过值而不是通过引用传递时更有效吗? sizeof(bool)
上的上限是否有任何保证?
答案 0 :(得分:6)
C ++和C标准并非旨在保护您免受恶意攻击。
这很简单。您必须相信您的实现不会尝试变坏。如果是这样,请不要使用它。
对于这种特殊情况:任何使复制内置整数类型都很昂贵的实现,即使在技术上符合要求,也会破坏大量现实代码的性能,因此可能被认为是恶意的。
所以要明确答案:不,标准不能保证,因为这超出了他们的范围。但是,它受到现实世界限制的保证。