forked from hsutter/cppfront
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpure2-bugfix-for-memberwise-base-assignment.cpp
More file actions
89 lines (70 loc) · 3.69 KB
/
pure2-bugfix-for-memberwise-base-assignment.cpp
File metadata and controls
89 lines (70 loc) · 3.69 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#define CPP2_INCLUDE_STD Yes
//=== Cpp2 type declarations ====================================================
#include "cpp2util.h"
#line 1 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
class Base;
#line 2 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
#line 7 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
class Derived;
//=== Cpp2 type definitions and function declarations ===========================
#line 1 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
class Base {
#line 2 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: explicit Base();
public: Base([[maybe_unused]] Base const& that);
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: auto operator=([[maybe_unused]] Base const& that) -> Base& ;
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: Base([[maybe_unused]] Base&& that) noexcept;
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: auto operator=([[maybe_unused]] Base&& that) noexcept -> Base& ;
public: Base([[maybe_unused]] auto const& unnamed_param_2);
#line 4 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: auto operator=([[maybe_unused]] auto const& unnamed_param_2) -> Base& ;
};
class Derived: public Base {
public: explicit Derived();
public: Derived(Derived const& that);
#line 10 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
public: Derived(Derived&& that) noexcept;
public: auto operator=(Derived&& that) noexcept -> Derived& ;
};
auto main() -> int;
//=== Cpp2 function definitions =================================================
#line 1 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
#line 2 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Base::Base(){}
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Base::Base ([[maybe_unused]] Base const& that) { std::cout << "(out this, that)\n"; }
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
auto Base::operator=([[maybe_unused]] Base const& that) -> Base& { std::cout << "(out this, that)\n";
return *this; }
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Base::Base ([[maybe_unused]] Base&& that) noexcept { std::cout << "(out this, that)\n"; }
#line 3 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
auto Base::operator=([[maybe_unused]] Base&& that) noexcept -> Base& { std::cout << "(out this, that)\n";
return *this; }
#line 4 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Base::Base([[maybe_unused]] auto const& unnamed_param_2) { std::cout << "(implicit out this, _)\n"; }
#line 4 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
auto Base::operator=([[maybe_unused]] auto const& unnamed_param_2) -> Base& { std::cout << "(implicit out this, _)\n";
return *this; }
#line 9 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Derived::Derived()
: Base{ }{}
#line 10 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Derived::Derived(Derived const& that)
: Base{ static_cast<Base const&>(that) }{}
#line 10 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
Derived::Derived(Derived&& that) noexcept
: Base{ static_cast<Base&&>(that) }{}
#line 11 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
auto Derived::operator=(Derived&& that) noexcept -> Derived& {
Base::operator= ( static_cast<Base&&>(that) );
return *this; }
#line 14 "pure2-bugfix-for-memberwise-base-assignment.cpp2"
auto main() -> int{
auto d {Derived()};
auto d2 {d};
d2 = cpp2::move(d);
}