// PR c++/104182
// { dg-do run { target c++11 } }
#include <initializer_list>
int b;
struct stringy {
  const char *p;
  stringy(const char *p): p(p) { ++b; }
  const char& operator[](int i) const { return p[i]; }
  ~stringy() { --b; }
};
struct S
{
  int A;
  stringy B;
};
struct veccy {
  S s;
  veccy (const std::initializer_list<S> &l): s(*l.begin()) {}
  const S& operator[](int i) const { return s; }
};
struct V
{
  veccy v;
};
static const V v{ { { { 237, "2" } } } };
int main()
{
  if (v.v[0].A != 237 || v.v[0].B[0] != '2')
    __builtin_abort();
  return 0;
}