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

            Bug ID: 83689
           Summary: Internal compiler error using
                    is_trivially_default_constructible on array of
                    nontrivially-destructible types
           Product: gcc
           Version: 7.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhangxy at google dot com
  Target Milestone: ---

The following code triggers internal compiler error (see
https://godbolt.org/g/dXRbdK for more details and comparison with clang):

/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits: In
instantiation of 'struct std::is_trivially_constructible<NontrivialDefaultCtor
[10]>':
/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits:1373:12:  
required from 'struct
std::is_trivially_default_constructible<NontrivialDefaultCtor [10]>'
31 : <source>:31:84:   required from here
/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits:1366:12:
internal compiler error: in build_value_init_noctor, at cp/init.c:483
     struct is_trivially_constructible
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
mmap: Invalid argument

```
#include <type_traits>

class NontrivialDefaultCtor {
 public:
  NontrivialDefaultCtor() {}
};

void f() {
  using NontrivialDefaultCtor10 = NontrivialDefaultCtor[10];
 
static_assert(!std::is_trivially_default_constructible<NontrivialDefaultCtor10>::value,
                  "This should be false");
}
```

Reply via email to