为什么以下代码格式正确:
void foo(int i, int j = 56);
void foo(int i = 42, int j);
int main(){ }
但以下
void foo(int i = 42, int j);
void foo(int i, int j = 56);
int main(){ }
格式不正确。我试图在 中查找,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(){ }
那么,这是一个实施问题吗?从形式上讲,所有这些例子都应该是可以接受的,不是吗?