gpt4 book ai didi

c++ - 重新声明时替换函数默认参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:17:04 24 4
gpt4 key购买 nike

<分区>

为什么下面的代码格式正确:

void foo(int i, int j = 56);
void foo(int i = 42, int j);

int main(){ }

DEMO

但是下面的

void foo(int i = 42, int j);
void foo(int i, int j = 56);

int main(){ }

DEMO

格式错误。我试图在 N4296::8.3.6 [dcl.fct.default] 中查找,我发现的是以下示例:

class C 
{
void f(int i = 3);
void g(int i, int j = 99);
};
void C::f(int i = 3) { } //error
void C::g(int i = 88, int j) { // C::g can be called with no argument
}

但 clang 似乎不是那样的。

struct A
{
void foo(int i = 42, int j);
};

void A::foo(int i, int j = 56){ }; //error

int main(){ }

DEMO

那么,这是一个实现问题吗?从形式上讲,所有这些示例都应该是可以接受的,不是吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com