从
&
运算符的典型用法来看,这听起来像是一个微不足道的问题,但是标准是否保证在尝试获取地址时,address-of-operator 无法返回 nullptr
?
不保证
operator&
不能返回 nullptr
,例如通过重载此运算符。
这是一个人为的例子:
#include <iostream>
struct foo { foo* operator& () { return nullptr; } };
int main()
{
foo f;
if (&f == nullptr) { std::cout << "nullptr detected\n"; }
}