summaryrefslogtreecommitdiff
path: root/bindgen-tests/tests/headers/deleted-function.hpp
diff options
context:
space:
mode:
authorChristian Poveda <christian.poveda@ferrous-systems.com>2022-09-23 21:36:14 -0500
committerChristian Poveda <christian.poveda@ferrous-systems.com>2022-10-04 20:47:17 -0500
commit0296f9e86c7756e718b6b82836ce1e09b5f8d08a (patch)
treeb5954c6680b243c0b1671a80ea973ef90877e462 /bindgen-tests/tests/headers/deleted-function.hpp
parenta900f8f863d1313ad76603234aaeea22bb9ba7b3 (diff)
split the repo into a workspace
remove `clap` dependency :tada: update the book installation instructions
Diffstat (limited to 'bindgen-tests/tests/headers/deleted-function.hpp')
-rw-r--r--bindgen-tests/tests/headers/deleted-function.hpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/bindgen-tests/tests/headers/deleted-function.hpp b/bindgen-tests/tests/headers/deleted-function.hpp
new file mode 100644
index 00000000..61848a0a
--- /dev/null
+++ b/bindgen-tests/tests/headers/deleted-function.hpp
@@ -0,0 +1,35 @@
+// bindgen-flags: --generate-inline-functions -- -std=c++11
+
+class A {
+public:
+ // Deleted function should not get a binding.
+ void deleted() = delete;
+
+ // Inline functions should get bindings, whether they are defined inline
+ // (in the class) or out of line.
+ inline void inline_definition() {}
+ inline void out_of_line_definition();
+
+ // TODO: This is an edge case that we get wrong: An inline function
+ // without a definition in the same translation unit should still get a
+ // binding. We currently can't distinguish this case from a deleted member
+ // function because libclang doesn't provide a direct way to query for
+ // deleted member functions. This seems acceptable, however, as an inline
+ // function without a definition in the same translation unit is unlikely
+ // to be useful in practice.
+ inline void inline_without_definition();
+};
+
+void A::out_of_line_definition() {}
+
+class B {
+public:
+ // Deleted copy constructor should not get a binding.
+ B(B&) = delete;
+};
+
+class C {
+public:
+ // Defaulted copy constructor should get a binding.
+ C(C&) = default;
+}; \ No newline at end of file