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