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