2025-01-24 18:59:28 -08:00
|
|
|
struct A { int x }
|
|
|
|
|
struct B { int x ; int y }
|
|
|
|
|
struct C { int x ; int y ; int z }
|
|
|
|
|
|
|
|
|
|
/* C <: B B <: B */
|
|
|
|
|
/* ---------------------- */
|
|
|
|
|
/* (B) -> B <: (C) -> B */
|
|
|
|
|
B f(B b) {
|
|
|
|
|
return b;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void g((C) -> B f) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-24 21:10:31 -08:00
|
|
|
int program(int argc, string[] args) {
|
2025-01-24 18:59:28 -08:00
|
|
|
g(f);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|