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