--- /dev/null
+// PR c++/101239
+// { dg-do compile { target c++11 } }
+
+template<class T, int N> auto f(T* p) -> decltype(p[N]);
+template<class T, int N> auto f(T* p) -> decltype(p[-N]);
+template<class T, int N> auto f(T* p) -> decltype(N[p]);
+template<class T, int N> void f(T* p);
+
+template<class T> auto g(T* p, int n) -> decltype(p[n]);
+template<class T> auto g(T* p, int n) -> decltype(p[-n]);
+template<class T> auto g(T* p, int n) -> decltype(n[p]);
+template<class T> void g(T* p, int n);
+
+struct Incomplete;
+
+int main() {
+ f<Incomplete, 0>(nullptr);
+ f<Incomplete, 1>(nullptr);
+ f<Incomplete, -1>(nullptr);
+ f<Incomplete, 7>(nullptr);
+ f<Incomplete, -7>(nullptr);
+
+ g<Incomplete>(nullptr, 0);
+}