// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq -- -std=c++11 // template class Foo { T m_member; T* m_member_ptr; T m_member_arr[1]; }; template class B { T m_member { 0 }; }; void bar(Foo foo); namespace mozilla { class Foo; }; struct C { B mB; B mBConstPtr; B mBConstStructPtr; B mBConstStructPtrArray; B mBConst; B mBVolatile; B mBConstBool; B mBConstChar; B mBArray; B mBPtrArray; B mBArrayPtr; B mBRef; B mBConstRef; B mPtrRef; B mArrayRef; B mBConstArray; }; template class D { typedef Foo MyFoo; MyFoo m_foo; template class U { MyFoo m_nested_foo; Z m_baz; }; }; template class Rooted { T* prev; Rooted* next; T ptr; }; class RootedContainer { Rooted root; }; template class WithDtor; typedef WithDtor WithDtorIntFwd; template class WithDtor { T member; ~WithDtor() {} }; class PODButContainsDtor { WithDtorIntFwd member; }; /**
*/ template class Opaque { T member; }; class POD { Opaque opaque_member; }; /** *
*/ template class Nested { T* buff; }; template class NestedBase { T* buff; }; template class NestedReplaced: public NestedBase { }; template class Incomplete; template class NestedContainer { T c; private: NestedReplaced nested; Incomplete inc; }; template class Incomplete { T d; }; class Untemplated {}; template class Templated { Untemplated m_untemplated; }; /** * If the replacement doesn't happen at the parse level the container would be * copy and the replacement wouldn't, so this wouldn't compile. * *
*/ template class ReplacedWithDestructor { T* buff; ~ReplacedWithDestructor() {}; }; template class ReplacedWithoutDestructor { T* buff; }; template class ReplacedWithoutDestructorFwd; template class ShouldNotBeCopiable { ReplacedWithoutDestructor m_member; }; template class ShouldNotBeCopiableAsWell { ReplacedWithoutDestructorFwd m_member; }; /** * If the replacement doesn't happen at the parse level the container would be * copy and the replacement wouldn't, so this wouldn't compile. * *
*/ template class ReplacedWithDestructorDeclaredAfter { T* buff; ~ReplacedWithDestructorDeclaredAfter() {}; };