Use std::copy instead of OPENSSL_memcpy for the internal bssl::Array::CopyFrom

This (internal) abstraction was originally made for trivial types, but
if we ever got a complex type, we should use C++ copies, not C copies,
to preserve all the rules of that type.

A good STL will specialize std::copy to memmove/memcpy when possible, so
this should not appreciably change the generated code.

Change-Id: I76af334ef667e545dbbbe87315ce5b30a327358c
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66427
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/ssl/internal.h b/ssl/internal.h
index 1b30690..13b97da 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -146,6 +146,7 @@
 
 #include <stdlib.h>
 
+#include <algorithm>
 #include <initializer_list>
 #include <limits>
 #include <new>
@@ -317,7 +318,7 @@
     if (!Init(in.size())) {
       return false;
     }
-    OPENSSL_memcpy(data_, in.data(), sizeof(T) * in.size());
+    std::copy(in.begin(), in.end(), data_);
     return true;
   }