是否允许获取未定义函数的地址?

Tim*_*imo 6 c++ function-pointers one-definition-rule language-lawyer

以下代码定义了整个程序。这个程序标准是否符合(最新版本)?

void foo();

int main()
{
    auto x = &foo;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是一个方便的快捷方式。

这段代码没有实际用途,我只是好奇。

Art*_*yer 10

odr 使用的每个函数都需要定义(不需要诊断)。获取函数的地址是 odr 使用,因此该程序表现出未定义的行为。通过优化,address-of 被优化掉,因此它没有链接器错误,但它不需要工作。