typedef __SIZE_TYPE__ size_t;
template<int I>
struct X0 {
X0();
static void* operator new(size_t);
static void operator delete(void*, size_t) {
int *ip = I; }
};
void test_X0() {
new X0<1>; }
template<int I>
struct X1 {
X1();
static void* operator new(size_t);
static void operator delete(void*) {
int *ip = I; }
};
void test_X1() {
new X1<1>; }
template<int I>
struct X2 {
X2();
static void* operator new(size_t, double, double);
static void* operator new(size_t, int, int);
static void operator delete(void*, const int, int) {
int *ip = I; }
static void operator delete(void*, double, double);
};
void test_X2() {
new (0, 0) X2<1>; }
struct X3 {
X3();
static void* operator new(size_t, double, double);
template<typename T>
static void operator delete(void*, T x, T) {
double *dp = &x;
int *ip = &x; }
};
void test_X3() {
new (0, 0) X3; }
struct X4 {
X4();
static void* operator new(size_t, double, double);
};
template<typename T>
void operator delete(void*, T x, T) {
double *dp = &x;
int *ip = &x; }
void test_X4() {
new (0, 0) X4; }
struct X5 {
X5();
static void* operator new(size_t, double, double);
void operator delete(void*, double*, double*);
};
void test_X5() {
new (0, 0) X5; }
template<int I>
struct X6 {
X6();
static void* operator new(size_t) {
return I; }
static void operator delete(void*) {
int *ip = I; }
};
void test_X6() {
new X6<3>; }
void *operator new(size_t, double, double, double);
template<typename T>
void operator delete(void*, T x, T, T) {
double *dp = &x;
int *ip = &x; }
void test_int_new() {
new (1.0, 1.0, 1.0) int; }
#if 0#endif