Add size() and data() to SkAlignedSTStorage

Change-Id: I274e117215cf7c79c77a3b5b22e516528cfdc73a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/606903
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/include/private/SkTArray.h b/include/private/SkTArray.h
index 872b777..0223d3a 100644
--- a/include/private/SkTArray.h
+++ b/include/private/SkTArray.h
@@ -687,6 +687,10 @@
         INHERITED::operator=(std::move(that));
         return *this;
     }
+
+    // Force the use of SkTArray for data() and size().
+    using INHERITED::data;
+    using INHERITED::size;
 };
 
 #endif
diff --git a/include/private/SkTemplates.h b/include/private/SkTemplates.h
index 00502f1..f893333 100644
--- a/include/private/SkTemplates.h
+++ b/include/private/SkTemplates.h
@@ -407,8 +407,14 @@
      */
     void* get() { return fStorage; }
     const void* get() const { return fStorage; }
+
+    // Act as a container of bytes because the storage is uninitialized.
+    std::byte* data() { return fStorage; }
+    const std::byte* data() const { return fStorage; }
+    size_t size() const { return std::size(fStorage); }
+
 private:
-    alignas(T) char fStorage[sizeof(T)*N];
+    alignas(T) std::byte fStorage[sizeof(T) * N];
 };
 
 using SkAutoFree = std::unique_ptr<void, SkFunctionWrapper<void(void*), sk_free>>;