1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics
37d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
47d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor// FIXME: More bullets to go!
57d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
67d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregortemplate<typename T, typename U>
77d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregorstruct has_nondeduced_pack_test {
87d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor  static const bool value = false;
97d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor};
107d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
117d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregortemplate<typename R, typename FirstType, typename ...Types>
127d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregorstruct has_nondeduced_pack_test<R(FirstType, Types..., int),
137d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor                                R(FirstType, Types...)> {
147d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor  static const bool value = true;
157d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor};
167d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
177d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor// - A function parameter pack that does not occur at the end of the
187d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor//   parameter-declaration-clause.
197d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregorint check_nondeduced_pack_test0[
207d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor                   has_nondeduced_pack_test<int(float, double, int),
217d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor                                            int(float, double)>::value? 1 : -1];
227d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
237d5c0c1273bdc1cb3dff1cb5a62d07b1439e82c7Douglas Gregor
24