1 // PR c++/59705
2 // { dg-do compile { target c++11 } }
3 
4 struct HasIter {
5    typedef int * const_iterator;
6 };
7 
8 struct NoIter {
9 };
10 
11 template <typename T>
foo(const T &,typename T::const_iterator *)12 constexpr bool foo(const T &, typename T::const_iterator *)
13 {
14   return true;
15 }
16 
17 template <typename T>
foo(const T &,...)18 constexpr bool foo(const T &, ...)
19 {
20   return false;
21 }
22 
23 HasIter has_iter;
24 NoIter no_iter;
25 
26 static_assert (!foo(no_iter, 0), "");
27 static_assert (foo(has_iter, 0), "");
28 static_assert (foo<HasIter>(has_iter, 0), "");
29