blob: b67d788e1b732ebf4cf4e7f33ded5cdc31dad7dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// Test that passing an object with non-trivial copy constructor and
// destructor is (conditionally) supported and has sensible semantics.
#include <stdarg.h>
extern "C" void abort();
void *as[5];
int i;
struct A {
A() { as[i++] = this; }
A(const A& a) {
if (&a != as[i-1])
abort();
as[i++] = this;
}
~A() {
if (this != as[--i])
abort();
}
};
void f(int i, ...) {
va_list ap;
va_start (ap, i);
A ar = va_arg (ap, A);
}
int main()
{
f(42,A());
if (i != 0)
abort();
}
|