// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s // expected-no-diagnostics // Note: Template argument deduction involving parameter packs // (14.5.3) can deduce zero or more arguments for each parameter pack. template struct X { static const unsigned value = 0; }; template struct X { static const unsigned value = 1; }; template struct Y { static const unsigned value = 0; }; template struct Y { static const unsigned value = 1; }; template int f(void (*)(Types ...)); void g(int, float); int check0[X::value == 0? 1 : -1]; // uses primary template int check1[X::value == 1? 1 : -1]; // uses partial specialization int check2[X::value == 0? 1 : -1]; // uses primary template int check3[Y<>::value == 0? 1 : -1]; // uses primary template int check4[Y::value == 1? 1 : -1]; // uses partial specialization int check5[Y::value == 0? 1 : -1]; // uses primary template int fv = f(g); // okay