https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118396

--- Comment #7 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
// PR c++/118396

extern "C"  void __assert_fail(const char *, const char *);
void *operator new(unsigned long, void *__p) { return __p; }

struct Foo {
  virtual ~Foo() = default;
};
struct Data {
  int status;
  Foo data{};
};

Data *P, *Q;

struct vector {
  vector (const Data &__value) {
    P = static_cast<Data *>(__builtin_operator_new(0));
    new (P) Data (__value);
    Q = P + 1;
  }
  Data *begin() { return P; }
  Data *end() { return Q; }
};

int
main ()
{
  vector items_(Data{});
  for (auto item : items_)
    item.status == 0 ? void() : __assert_fail("oy", "118396.C");
}

Reply via email to