This got fixed by r266055 but we didn't have a test like this.

Tested on x86_64-linux, applying to trunk.

2019-06-20  Marek Polacek  <pola...@redhat.com>

        PR c++/87512
        * g++.dg/cpp1z/inline-var7.C: New test.

diff --git gcc/testsuite/g++.dg/cpp1z/inline-var7.C 
gcc/testsuite/g++.dg/cpp1z/inline-var7.C
new file mode 100644
index 00000000000..71fa1d3b7da
--- /dev/null
+++ gcc/testsuite/g++.dg/cpp1z/inline-var7.C
@@ -0,0 +1,20 @@
+// PR c++/87512
+// { dg-do compile { target c++17 } }
+
+template <int, typename T = int> using enable_if_t = int;
+template<typename T> struct is_pointer { enum { value = 0 }; };
+
+template <typename T>
+inline constexpr auto IsPtr = is_pointer<T>::value;
+
+class Foo;
+class Bar;
+
+template <typename T1, typename T2>
+void foo(T1, T2);
+
+template <typename T>
+enable_if_t<IsPtr<T>> foo(T, Foo);
+
+template <>
+void foo<Bar>(Bar, Bar);

Reply via email to