File: dr1301.cpp

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (67 lines) | stat: -rw-r--r-- 1,604 bytes parent folder | download | duplicates (12)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// RUN: %clang_cc1 -std=c++11 -verify %s
struct A { // expected-note 2{{candidate}}
  A(int); // expected-note {{candidate}}
  int n;
};
int a = A().n; // expected-error {{no matching constructor}}

struct B {
  B() = delete; // expected-note 4{{here}}
  int n;
};
int b = B().n; // expected-error {{call to deleted}}

struct C {
  B b; // expected-note {{deleted default constructor}}
};
int c = C().b.n; // expected-error {{call to implicitly-deleted default}}

struct D {
  D() = default; // expected-note {{here}} expected-warning {{implicitly deleted}} expected-note{{replace 'default'}}
  B b; // expected-note 2{{'b' has a deleted default constructor}}
};
int d = D().b.n; // expected-error {{call to implicitly-deleted default}}

struct E {
  E() = default;
  int n;
};
int e = E().n; // ok

struct F {
  F();
  int n;
};
int f = F().n; // ok

union G {
  F f; // expected-note {{non-trivial default constructor}}
};
int g = G().f.n; // expected-error {{call to implicitly-deleted default}}

struct H {
  int n;
private:
  H(); // expected-note {{here}}
};
int h = H().n; // expected-error {{private constructor}}

struct I {
  H h; // expected-note {{inaccessible default constructor}}
};
int i = I().h.n; // expected-error {{call to implicitly-deleted default}}

struct J {
  J();
  virtual int f();
  int n;
};
int j1 = J().n; // ok
int j2 = J().f(); // ok

union K {
  J j; // expected-note 2{{non-trivial default constructor}}
  int m;
};
int k1 = K().j.n; // expected-error {{call to implicitly-deleted default}}
int k2 = K().j.f(); // expected-error {{call to implicitly-deleted default}}