112a9d9c8Sopenharmony_ci// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq
212a9d9c8Sopenharmony_ciclass A {
312a9d9c8Sopenharmony_cipublic:
412a9d9c8Sopenharmony_ci    int member_a;
512a9d9c8Sopenharmony_ci    class B {
612a9d9c8Sopenharmony_ci        int member_b;
712a9d9c8Sopenharmony_ci    };
812a9d9c8Sopenharmony_ci
912a9d9c8Sopenharmony_ci    class C;
1012a9d9c8Sopenharmony_ci
1112a9d9c8Sopenharmony_ci    template<typename T>
1212a9d9c8Sopenharmony_ci    class D {
1312a9d9c8Sopenharmony_ci      T foo;
1412a9d9c8Sopenharmony_ci    };
1512a9d9c8Sopenharmony_ci};
1612a9d9c8Sopenharmony_ci
1712a9d9c8Sopenharmony_ciclass A::C {
1812a9d9c8Sopenharmony_ci  int baz;
1912a9d9c8Sopenharmony_ci};
2012a9d9c8Sopenharmony_ci
2112a9d9c8Sopenharmony_ciA::B var;
2212a9d9c8Sopenharmony_ciA::D<int> baz;
2312a9d9c8Sopenharmony_ci
2412a9d9c8Sopenharmony_ciclass D {
2512a9d9c8Sopenharmony_ci    A::B member;
2612a9d9c8Sopenharmony_ci};
2712a9d9c8Sopenharmony_ci
2812a9d9c8Sopenharmony_citemplate<typename T>
2912a9d9c8Sopenharmony_ciclass Templated {
3012a9d9c8Sopenharmony_ci    T member;
3112a9d9c8Sopenharmony_ci
3212a9d9c8Sopenharmony_ci    class Templated_inner {
3312a9d9c8Sopenharmony_ci    public:
3412a9d9c8Sopenharmony_ci        T* member_ptr;
3512a9d9c8Sopenharmony_ci        void get();
3612a9d9c8Sopenharmony_ci    };
3712a9d9c8Sopenharmony_ci};
38