diff --git a/parser/src/config.rs b/parser/src/config.rs
index 4204acf..8d30249 100644
--- a/parser/src/config.rs
+++ b/parser/src/config.rs
@@ -33,6 +33,7 @@
 pub enum UnsafePolicy {
     AllFunctionsSafe,
     AllFunctionsUnsafe,
+    ReferencesWrappedAllFunctionsSafe,
 }
 
 impl Default for UnsafePolicy {
@@ -50,8 +51,13 @@
             Some(id) => {
                 if id == "unsafe_ffi" {
                     Ok(UnsafePolicy::AllFunctionsSafe)
+                } else if id == "unsafe_references_wrapped" {
+                    Ok(UnsafePolicy::ReferencesWrappedAllFunctionsSafe)
                 } else {
-                    Err(syn::Error::new(id.span(), "expected unsafe_ffi"))
+                    Err(syn::Error::new(
+                        id.span(),
+                        "expected unsafe_ffi or unsafe_references_wrapped",
+                    ))
                 }
             }
             None => Ok(UnsafePolicy::AllFunctionsUnsafe),
@@ -70,10 +76,20 @@
     fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
         if *self == UnsafePolicy::AllFunctionsSafe {
             tokens.extend(quote! { unsafe })
+        } else if *self == UnsafePolicy::ReferencesWrappedAllFunctionsSafe {
+            tokens.extend(quote! { unsafe_references_wrapped })
         }
     }
 }
 
+impl UnsafePolicy {
+    /// Whether we are treating C++ references as a different thing from Rust
+    /// references and therefore have to generate lots of code for a CppRef type
+    pub fn requires_cpprefs(&self) -> bool {
+        matches!(self, Self::ReferencesWrappedAllFunctionsSafe)
+    }
+}
+
 /// An entry in the allowlist.
 #[derive(Hash, Debug)]
 pub enum AllowlistEntry {
diff --git a/parser/src/directives.rs b/parser/src/directives.rs
index 160829e..70c88fc 100644
--- a/parser/src/directives.rs
+++ b/parser/src/directives.rs
@@ -268,10 +268,8 @@
     ) -> Box<dyn Iterator<Item = TokenStream> + 'a> {
         let policy = &config.unsafe_policy;
         match config.unsafe_policy {
-            crate::UnsafePolicy::AllFunctionsSafe => {
-                Box::new(std::iter::once(policy.to_token_stream()))
-            }
             crate::UnsafePolicy::AllFunctionsUnsafe => Box::new(std::iter::empty()),
+            _ => Box::new(std::iter::once(policy.to_token_stream())),
         }
     }
 }
