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