diag0257.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 85 行
C
85 行
void foo(int i1, int i2 = 2);
void foo(int i1, int i2, int i3 = 6);
void (*f)(int, int) = &foo; // OK
void goo(int i1 );
void goo(int i1, int i2, int i3 = 6);
void (*f2)(int, int) = &goo; // error no match
// extra test that should give error message without fatal error
class H;
void (H::*pmfh)(int,int,int) = &::operator();
// order shouldn't matter!
// 3 2 1
struct B {
void operator() (int i1, int i2); // (3)
// add (int,int)
void operator() (int i1, int i2, int i3 = 6); // (2)
// add (int,int,int) and (int, int, [int] )
void operator() (int i1, int i2 = 3); // (1)
// don't re-add (int,int) ( redeclaration of (1) )
// add (int, [int] )
};
void (B::*pmfb)(int, int) = &B::operator();
// 3 1 2
struct C {
void operator() (int i1, int i2); // (3)
void operator() (int i1, int i2 = 3); // (1)
void operator() (int i1, int i2, int i3 = 6); // (2)
};
void (C::*pmfc)(int, int) = &C::operator();
// 1 2 3
struct D {
void operator() (int i1, int i2 = 3); // (1)
void operator() (int i1, int i2, int i3 = 6); // (2)
void operator() (int i1, int i2); // (3)
};
void (D::*pmfd)(int, int) = &D::operator();
// 1 3 2
struct E {
void operator() (int i1, int i2 = 3); // (1)
void operator() (int i1, int i2); // (3)
void operator() (int i1, int i2, int i3 = 6); // (2)
};
void (E::*pmfe)(int, int) = &E::operator();
// 2 1 3
struct F {
void operator() (int i1, int i2, int i3 = 6); // (2)
void operator() (int i1, int i2 = 3); // (1)
void operator() (int i1, int i2); // (3)
};
void (F::*pmff)(int, int) = &F::operator();
// 2 3 1
struct G {
void operator() (int i1, int i2, int i3 = 6); // (2)
void operator() (int i1, int i2); // (3)
void operator() (int i1, int i2 = 3); // (1)
};
void (G::*pmfg)(int, int) = &G::operator();
void main()
{
B b;
C c;
D d;
E e;
F f;
G g;
foo(2,2); // ambig
goo(2,2); // OK
b.operator()(4,3);
c.operator()(4,3);
d.operator()(4,3);
e.operator()(4,3);
f.operator()(4,3);
g.operator()(4,3);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?