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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-12-22
                 CC|                            |trippels at gcc dot gnu.org
     Ever confirmed|0                           |1
      Known to fail|                            |5.3.0, 6.0

--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 tmp % cat tuple_size.pass.cc
using _uchar = char;
using _size_t = decltype(sizeof(_uchar));
using size_t = _size_t;
template <class T, T> struct integral_constant;
template <bool b> using bool_constant = integral_constant<bool, b>;
template <class> constexpr auto tuple_size_v = 0;
template <class T> auto const tuple_size_v<T const volatile> = tuple_size_v<T>;
template <class T>
using tuple_size = integral_constant<size_t, tuple_size_v<T>>;
template <typename Base, typename Deriv>
using is_base_of = bool_constant<__is_base_of(Base, Deriv)>;
template <class T, size_t N> void test() {
  is_base_of<integral_constant<size_t, N>, tuple_size<T>> value(
      is_base_of<integral_constant<size_t, N>, tuple_size<const volatile T>>);
}
void foo() { test<int, 0>; }

markus@x4 tmp % g++ -std=c++14 -c tuple_size.pass.cc
tuple_size.pass.cc: In instantiation of ‘void test() [with T = int; long
unsigned int N = 0ul]’:
tuple_size.pass.cc:16:26:   required from here
tuple_size.pass.cc:13:59: internal compiler error: in instantiate_decl, at
cp/pt.c:21511

Both gcc-5 and gcc-6 ICE. gcc-4.9 rejects the testcase.

markus@x4 tmp % clang++ -w -std=c++14 -c tuple_size.pass.cc
markus@x4 tmp %

Reply via email to