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 %