[PATCH] D48342: [libcxx] Optimize vectors construction of trivial types from an iterator range with const-ness mismatch.

Arthur O'Dwyer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 7 13:56:22 PST 2019


Quuxplusone added inline comments.


================
Comment at: libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp:161
+  {
+    // Though types are different, initialization can be done with `memcpy`.
+    int32_t array[1] = {-1};
----------------
I might add "can be, but currently isn't, done with memcpy."

Here's my other suggested test:

```
struct X { int x; };
struct Y { int y; };
struct Z : X, Y { int z; };
{
    Z z;
    Z *array[1] = { &z };
    // Though the types Z* and Y* are very similar, initialization still cannot be done with memcpy.
    std::vector<Y*> v(array, array + 1);
    assert(v[0] == &z);
}
```


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D48342/new/

https://reviews.llvm.org/D48342





More information about the cfe-commits mailing list