1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
// { dg-do run } #include <cassert> template<typename T, int I> int foo (T [I][I]) { return 0; } template<typename T> int foo (T [3][2]) { return 1; } template <> int foo (bool [3][2]) { return 2; } bool z[3][2]; int a = foo (z); int main () { assert (a == 2); }