// PR c++/16870 struct A { int operator[](int) const; }; template A foo(); A bar(A(*)()); template int baz() { return (bar(&foo<0>))[0]; } template int baz<0>();