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