[tint][utils] Add Vector(const Slice<const T>&) constructor

MSVC doesn't want to use the Vector(const Slice<U>&), possibly because
there's another implicit path it can take via slice conversion.

Change-Id: Iedf66823bf6957e86fbd83b1f5014fb70ef66b6e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/161340
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/utils/containers/vector.h b/src/tint/utils/containers/vector.h
index eefb3ab..663e310 100644
--- a/src/tint/utils/containers/vector.h
+++ b/src/tint/utils/containers/vector.h
@@ -397,6 +397,14 @@
 
     /// Copy constructor from an immutable slice
     /// @param other the slice to copy
+    /// @note This overload only exists to keep MSVC happy. The compiler should be able to match
+    /// `Slice<U>`.
+    Vector(const Slice<const T>& other) {  // NOLINT(runtime/explicit)
+        Copy(other);
+    }
+
+    /// Copy constructor from an immutable slice
+    /// @param other the slice to copy
     template <typename U>
     Vector(const Slice<U>& other) {  // NOLINT(runtime/explicit)
         Copy(other);