xref: /llvm-project/lldb/test/API/lang/cpp/const_this/main.cpp (revision 7862728cab1b7724d2adf0f0075a3289d87ec20c)
1 struct ContextClass {
2   int member = 3;
3   ContextClass *this_type = nullptr;
ContextClassContextClass4   ContextClass() { this_type = this; }
5 
funcContextClass6   int func() const {
7     return member; // break in function in class.
8   }
9 
templateFuncContextClass10   template <class T> T templateFunc(T x) const {
11     return member; // break in templated function in class.
12   }
13 };
14 
15 template <typename TC> struct TemplatedContextClass {
16   int member = 4;
17   TemplatedContextClass<TC> *this_type = nullptr;
TemplatedContextClassTemplatedContextClass18   TemplatedContextClass() { this_type = this; }
19 
funcTemplatedContextClass20   int func() const {
21     return member; // break in function in templated class.
22   }
23 
templateFuncTemplatedContextClass24   template <class T> T templateFunc(T x) const {
25     return member; // break in templated function in templated class.
26   }
27 };
28 
main()29 int main() {
30   ContextClass c;
31   TemplatedContextClass<int> t;
32   return c.func() + c.templateFunc(1) + t.func() + t.templateFunc(1);
33 }
34