dawncpp.h: Add nullptr ObjectBase constructor and assignment

BUG=dawn:3

Change-Id: I9f7ec0ae1c7885809888a603ed056c6565751bec
Reviewed-on: https://dawn-review.googlesource.com/c/2840
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/generator/templates/apicpp.h b/generator/templates/apicpp.h
index af142b0..87bd71b 100644
--- a/generator/templates/apicpp.h
+++ b/generator/templates/apicpp.h
@@ -97,6 +97,15 @@
                 return static_cast<Derived&>(*this);
             }
 
+            ObjectBase(nullptr_t) {}
+            Derived& operator=(nullptr_t) {
+                if (mHandle != nullptr) {
+                    Derived::DawnRelease(mHandle);
+                    mHandle = nullptr;
+                }
+                return static_cast<Derived&>(*this);
+            }
+
             explicit operator bool() const {
                 return mHandle != nullptr;
             }