| // PR c++/53401 |
| // { dg-do compile { target c++11 } } |
| |
| template<int I> |
| struct index |
| {}; |
| |
| constexpr int recursive_impl(const index<0u>&) |
| { |
| return 0; |
| } |
| |
| template<int N> |
| constexpr auto recursive_impl(index<N>) |
| -> decltype(recursive_impl(index<N - 1>())) // { dg-error "depth" } |
| { |
| return recursive_impl(index<N - 1>()); |
| } |
| |
| template<int N> |
| constexpr auto recursive() |
| -> decltype(recursive_impl(index<N>())) |
| { |
| return recursive_impl(index<N>()); |
| } |
| |
| void f(int i) |
| { |
| recursive<1>(); // { dg-message "from here" } |
| } |
| |
| // { dg-prune-output "compilation terminated" } |