// { dg-do compile } template struct V { T& operator[](int); }; struct S { S operator +(int); template T value(); }; template void R (T v) { v[(S() + 0).template value()][0] = 0; } int main () { R(V >()); }