1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 2 3 // If type deduction cannot be done for any P/A pair, or if for any 4 // pair the deduction leads to more than one possible set of deduced 5 // values, or if different pairs yield different deduced values, or if 6 // any template argument remains neither deduced nor explicitly 7 // specified, template argument deduction fails. 8 9 template<typename ...> struct tuple; 10 11 template<typename T, typename U> 12 struct same_tuple { 13 static const bool value = false; 14 }; 15 16 template<typename ...Types1> 17 struct same_tuple<tuple<Types1...>, tuple<Types1...> > { 18 static const bool value = true; 19 }; 20 21 int same_tuple_check1[same_tuple<tuple<int, float>, tuple<int, double>>::value? -1 : 1]; 22 int same_tuple_check2[same_tuple<tuple<float, double>, tuple<float, double>>::value? 1 : -1]; 23 24