aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.bugs/900220_01.C
blob: df7e641fe5f7559583602321b8e21cd4bb5adb1e (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
35
36
// g++ 1.36.1 bug 900220_01

// Ref: 12.8

// Section 12.8 says:

//	"That is, X::operator=() will be generated only if no assignment
//	operation is explicitly declared and an object of class X is actually
//	assigned an object of class X (or an object of a class derived from X)
//	or if the address of X::operator= is taken.

// g++ does not allow you to take the address of an implicitly generated
// operator=

// keywords: operator=, implicit copy operator, operator&

struct struct0 {
  int data_member;
};

typedef struct0& (struct0::*member_func_t) (const struct0&);

member_func_t member_func;

void global_function_0 (member_func_t member_f)
{						// gets bogus error - ref from below
}

void global_function_1 ()
{
  member_func = &struct0::operator=;		// gets bogus error

  global_function_0 (&struct0::operator=);	// gets bogus error
}

int main () { return 0; }