Allow multiple arg refs if C++ function is unsafe extern
diff --git a/syntax/check.rs b/syntax/check.rs
index b95123d..73ce885 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -325,6 +325,10 @@
 }
 
 fn check_multiple_arg_lifetimes(cx: &mut Check, efn: &ExternFn) {
+    if efn.lang == Lang::Cxx && efn.trusted {
+        return;
+    }
+
     match &efn.ret {
         Some(Type::Ref(_)) => {}
         _ => return,
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 33ed31c..94c2cc8 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -98,6 +98,7 @@
     pub name: Pair,
     pub sig: Signature,
     pub semi_token: Token![;],
+    pub trusted: bool,
 }
 
 pub struct TypeAlias {
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 34b5e1b..662b099 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -233,10 +233,12 @@
                     Err(err) => cx.push(err),
                 }
             }
-            ForeignItem::Fn(foreign) => match parse_extern_fn(cx, foreign, lang, &namespace) {
-                Ok(efn) => items.push(efn),
-                Err(err) => cx.push(err),
-            },
+            ForeignItem::Fn(foreign) => {
+                match parse_extern_fn(cx, foreign, lang, trusted, &namespace) {
+                    Ok(efn) => items.push(efn),
+                    Err(err) => cx.push(err),
+                }
+            }
             ForeignItem::Macro(foreign) if foreign.mac.path.is_ident("include") => {
                 match foreign.mac.parse_body_with(parse_include) {
                     Ok(include) => items.push(Api::Include(include)),
@@ -332,6 +334,7 @@
     cx: &mut Errors,
     foreign_fn: &ForeignItemFn,
     lang: Lang,
+    trusted: bool,
     namespace: &Namespace,
 ) -> Result<Api> {
     let generics = &foreign_fn.sig.generics;
@@ -449,6 +452,7 @@
             throws_tokens,
         },
         semi_token,
+        trusted,
     }))
 }