blob: 3f0a0e7d0f02c00176f55fed60fdcf3f983c8516 [file] [log] [blame]
// { dg-do compile }
// { dg-options "-Wunused -W" }
// Suppress a warning that is irrelevant to the purpose of this test.
// { dg-options "-Wunused -W -Wno-abi" { target arm_eabi } }
#include <stdarg.h>
struct A
{
long a;
A () : a (0) { }
A (long x) : a (x) { }
operator long () const { return a; }
long operator- (const A& x) const { return a - x.a; }
};
long
fn1 (A a)
{
return a - A (0);
}
struct B
{
bool operator() (const int x, const int y) const throw() { return x < y; }
};
template <typename T>
bool
fn2 (int x, int y, T z)
{
return z (x, y);
}
bool
fn3 (void)
{
return fn2 (1, 2, B ());
}
int
fn4 (va_list ap)
{
return va_arg (ap, int);
}
template <typename T>
T
fn5 (va_list ap)
{
return va_arg (ap, T);
}
int
fn6 (va_list ap)
{
return fn5 <int> (ap);
}
template <typename T>
int
fn7 (T ap)
{
return va_arg (ap, int);
}
int
fn8 (va_list ap)
{
return fn7 (ap);
}