1// { dg-do compile }
2
3template <typename T>
4struct V {
5  T& operator[](int);
6};
7
8struct S {
9  S operator +(int);
10  template <typename T> T value();
11};
12
13template <typename T>
14void R (T v)
15{
16  v[(S() + 0).template value<int>()][0] = 0;
17}
18
19int
20main ()
21{
22  R(V<V<int> >());
23}
24