Fix align of CxxVector

A vector whose element type is highly aligned need not itself be highly
aligned. If C++ passed in a reference to a vector which is less aligned
than its element type, and Rust thought vectors were more highly aligned
then they really are, then that would have been undefined behavior.
diff --git a/src/cxx_vector.rs b/src/cxx_vector.rs
index feb2e29..6cf927b 100644
--- a/src/cxx_vector.rs
+++ b/src/cxx_vector.rs
@@ -1,3 +1,5 @@
+use std::mem;
+
 pub trait VectorTarget<T> {
     fn get_unchecked(v: &CxxVector<T>, pos: usize) -> &T
     where
@@ -20,7 +22,7 @@
 /// compatible with Rust's move behavior. Instead in Rust code we will only ever
 /// look at a Vector through a reference or smart pointer, as in `&Vector`
 /// or `UniquePtr<Vector>`.
-#[repr(C)]
+#[repr(C, packed)]
 pub struct CxxVector<T> {
     _private: [T; 0],
 }
@@ -90,3 +92,5 @@
 cxxbridge_macro::vector_builtin!(isize);
 cxxbridge_macro::vector_builtin!(f32);
 cxxbridge_macro::vector_builtin!(f64);
+
+const_assert_eq!(1, mem::align_of::<CxxVector<usize>>());