Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/template/partial1.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
// { dg-do run } // Origin: Jo Totland <jototland@hotmail.com> // PR c++/6620 // Partial specialization involving expression of non-type template // parameter causes ICE. extern "C" void abort(); template <int N> struct HoldInt { }; template <class A, class B> struct Add { }; template <int N> struct Add<HoldInt<N>, HoldInt<-N> > { typedef int type; int f() { return 0; } }; template <int N, int M> struct Add<HoldInt<N>, HoldInt<M> > { typedef HoldInt<N+M> type; int f() { return 1; } }; int main() { Add<HoldInt<1>, HoldInt<-1> > a; Add<HoldInt<1>, HoldInt<-2> > b; if (a.f() != 0 || b.f() != 1) abort(); }