| // PR c++/59705 | |
| // { dg-do compile { target c++11 } } | |
| struct HasIter { | |
| typedef int * const_iterator; | |
| }; | |
| struct NoIter { | |
| }; | |
| template <typename T> | |
| constexpr bool foo(const T &, typename T::const_iterator *) | |
| { | |
| return true; | |
| } | |
| template <typename T> | |
| constexpr bool foo(const T &, ...) | |
| { | |
| return false; | |
| } | |
| HasIter has_iter; | |
| NoIter no_iter; | |
| static_assert (!foo(no_iter, 0), ""); | |
| static_assert (foo(has_iter, 0), ""); | |
| static_assert (foo<HasIter>(has_iter, 0), ""); |