diff --git a/bindgen-tests/tests/expectations/tests/class_with_enum.rs b/bindgen-tests/tests/expectations/tests/class_with_enum.rs
new file mode 100644
index 0000000000..ca1806357c
--- /dev/null
+++ b/bindgen-tests/tests/expectations/tests/class_with_enum.rs
@@ -0,0 +1,14 @@
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct A {
+ pub _address: u8,
+}
+pub const A_B_B1: A_B = 0;
+pub const A_B_B2: A_B = 1;
+pub type A_B = ::std::os::raw::c_uint;
+#[allow(clippy::unnecessary_operation, clippy::identity_op)]
+const _: () = {
+ ["Size of A"][::std::mem::size_of::() - 1usize];
+ ["Alignment of A"][::std::mem::align_of::() - 1usize];
+};
diff --git a/bindgen-tests/tests/expectations/tests/special-members.rs b/bindgen-tests/tests/expectations/tests/special-members.rs
new file mode 100644
index 0000000000..4f54670c86
--- /dev/null
+++ b/bindgen-tests/tests/expectations/tests/special-members.rs
@@ -0,0 +1,51 @@
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+#[repr(C)]
+#[derive(Debug, Default)]
+pub struct A {
+ pub _address: u8,
+}
+#[allow(clippy::unnecessary_operation, clippy::identity_op)]
+const _: () = {
+ ["Size of A"][::std::mem::size_of::() - 1usize];
+ ["Alignment of A"][::std::mem::align_of::() - 1usize];
+};
+unsafe extern "C" {
+ #[link_name = "\u{1}_ZN1AC1Ev"]
+ pub fn A_A(this: *mut A);
+}
+unsafe extern "C" {
+ #[link_name = "\u{1}_ZN1AC1ERS_"]
+ pub fn A_A1(this: *mut A, arg1: *mut A);
+}
+unsafe extern "C" {
+ #[link_name = "\u{1}_ZN1AC1EOS_"]
+ pub fn A_A2(this: *mut A, arg1: *mut A);
+}
+unsafe extern "C" {
+ #[link_name = "\u{1}_ZN1AD1Ev"]
+ pub fn A_A_destructor(this: *mut A);
+}
+impl A {
+ #[inline]
+ pub unsafe fn new() -> Self {
+ let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
+ A_A(__bindgen_tmp.as_mut_ptr());
+ __bindgen_tmp.assume_init()
+ }
+ #[inline]
+ pub unsafe fn new1(arg1: *mut A) -> Self {
+ let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
+ A_A1(__bindgen_tmp.as_mut_ptr(), arg1);
+ __bindgen_tmp.assume_init()
+ }
+ #[inline]
+ pub unsafe fn new2(arg1: *mut A) -> Self {
+ let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
+ A_A2(__bindgen_tmp.as_mut_ptr(), arg1);
+ __bindgen_tmp.assume_init()
+ }
+ #[inline]
+ pub unsafe fn destruct(&mut self) {
+ A_A_destructor(self)
+ }
+}
diff --git a/bindgen-tests/tests/headers/class_with_enum.hpp b/bindgen-tests/tests/headers/class_with_enum.hpp
new file mode 100644
index 0000000000..ebbc2c4049
--- /dev/null
+++ b/bindgen-tests/tests/headers/class_with_enum.hpp
@@ -0,0 +1,7 @@
+class A {
+public:
+ enum B {
+ B1,
+ B2,
+ };
+};
\ No newline at end of file
diff --git a/bindgen-tests/tests/headers/special-members.hpp b/bindgen-tests/tests/headers/special-members.hpp
new file mode 100644
index 0000000000..753b2fdc0a
--- /dev/null
+++ b/bindgen-tests/tests/headers/special-members.hpp
@@ -0,0 +1,7 @@
+class A {
+public:
+ A();
+ A(A&);
+ A(A&&);
+ ~A();
+};
\ No newline at end of file