// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s // expected-no-diagnostics namespace ParameterPacksWithFunctions { template struct count; template struct count { static const unsigned value = 1 + count::value; }; template<> struct count<> { static const unsigned value = 0; }; template struct unsigned_c { }; template unsigned_c::value> f(); void test_f() { unsigned_c<0> uc0a = f(); // okay, deduced to an empty pack unsigned_c<0> uc0b = f<>(); unsigned_c<1> uc1 = f(); unsigned_c<2> uc2 = f(); } } namespace rdar12176336 { typedef void (*vararg_func)(...); struct method { vararg_func implementation; method(vararg_func implementation) : implementation(implementation) {} template auto getImplementation() const -> TFunctionType { return reinterpret_cast(implementation); } }; void f() { method m(nullptr); auto imp = m.getImplementation(); } }