blob: b67d788e1b732ebf4cf4e7f33ded5cdc31dad7dd [file] [log] [blame]
// 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();
}