1 // PR c++/55220 2 // { dg-do compile { target c++11 } } 3 4 template <typename ...> struct something_like_tuple 5 { 6 7 }; 8 9 template <typename, typename> struct is_last 10 { 11 static const bool value = false; 12 }; 13 14 // Head is non-deducible, so this can't work as the user intended 15 template <typename T, template <typename ...> class Tuple, typename ... Head> 16 struct is_last<T, Tuple<Head ..., T>> 17 { 18 static const bool value = true; 19 }; 20 21 #define SA(X) static_assert (X, #X) 22 23 typedef something_like_tuple<char, int, float> something_like_tuple_t; 24 SA ((is_last<float, something_like_tuple_t>::value == false)); 25 SA ((is_last<int, something_like_tuple_t>::value == false)); 26