view gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/68949
// { dg-do run { target c++11 } }

struct Sub {
    int i;

    constexpr Sub() : i(-1) {} // remove constexpr and it works as expected
    Sub(Sub&& rhs); // remove this constructor and it works as epxected.
};

// v-- move this inline and it works as expected
// v-- remove ': Sub()' and it works as expected
Sub::Sub(Sub&& rhs) : Sub() { int tmp = i; i = rhs.i; rhs.i = tmp; }

struct Class {
    // v-- remove '[1]' and it works as expected
    // v-- add '= {}' and it works as expected
    Sub s[1];

    // v-- add ': s{}' and it works as expected
    // v-- removing this constructor makes it work as expected
    Class() {}
};

int main() {
    Class c;
    if (c.s[0].i != -1)
      __builtin_abort();
}