// PR target/95528
// { dg-do compile { target c++11 } }
// { dg-options "-O3" }
// { dg-additional-options "-march=skylake-avx512" { target i?86-*-*- x86_64-*-* } }
template <typename a> struct b {
  typedef a c __attribute__((vector_size(sizeof(a) * 4)));
  union {
    c d;
    struct {
      a e, f, g, h;
    };
  };
  b();
  b(const b &i) : d(i.d) {}
  static b j(c);
  template <typename k> operator b<k>() {
    b<k>::j(typename b<k>::c{k(e), k(f), k(g), k(h)});
    return b<k>();
  }
};
template <typename a> using l = b<a>;
using m = l<char>;
using n = l<short>;
m o(n i) { return i; }
b<short> q;
void p() { o(q); }