Consistently use ::std in generated code
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 1a071a2..328c166 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -322,10 +322,10 @@
         writeln!(out, "missing trycatch(...);");
         writeln!(out);
         writeln!(out, "template <typename Try, typename Fail>");
-        writeln!(out, "static typename std::enable_if<");
+        writeln!(out, "static typename ::std::enable_if<");
         writeln!(
             out,
-            "    std::is_same<decltype(trycatch(std::declval<Try>(), std::declval<Fail>())),",
+            "    ::std::is_same<decltype(trycatch(::std::declval<Try>(), ::std::declval<Fail>())),",
         );
         writeln!(out, "                 missing>::value>::type");
         writeln!(out, "trycatch(Try &&func, Fail &&fail) noexcept try {{");
@@ -439,7 +439,7 @@
     writeln!(out, "static_assert(");
     writeln!(
         out,
-        "    std::is_trivially_move_constructible<{}>::value,",
+        "    ::std::is_trivially_move_constructible<{}>::value,",
         id,
     );
     writeln!(
@@ -448,7 +448,7 @@
         id,
     );
     writeln!(out, "static_assert(");
-    writeln!(out, "    std::is_trivially_destructible<{}>::value,", id);
+    writeln!(out, "    ::std::is_trivially_destructible<{}>::value,", id);
     writeln!(
         out,
         "    \"type {} marked as Trivial in Rust is not trivially destructible in C++\");",