summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/template
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2018-02-23 22:36:54 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2018-02-23 22:36:54 +0000
commit88a3ea34080ad3087a8191fbf479543153175d59 (patch)
tree34eaec34d3588e09f9a77abba776266f124dc823 /gcc/testsuite/g++.dg/template
parent25e15aaed275cdfef34b3ee6eb3cb4b43a48d44f (diff)
parente65055a558093bd4fc0b1b0024b7814cc187b8e8 (diff)
downloadgcc-88a3ea34080ad3087a8191fbf479543153175d59.tar.gz
Merge from trunk revision 257954.gccgo
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gccgo@257955 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/template')
-rw-r--r--gcc/testsuite/g++.dg/template/instantiate5.C9
-rw-r--r--gcc/testsuite/g++.dg/template/nontype-fn1.C11
-rw-r--r--gcc/testsuite/g++.dg/template/overload15.C16
-rw-r--r--gcc/testsuite/g++.dg/template/sizeof16.C7
-rw-r--r--gcc/testsuite/g++.dg/template/sizeof17.C7
5 files changed, 48 insertions, 2 deletions
diff --git a/gcc/testsuite/g++.dg/template/instantiate5.C b/gcc/testsuite/g++.dg/template/instantiate5.C
index 896313d14d5..d64092eb1a8 100644
--- a/gcc/testsuite/g++.dg/template/instantiate5.C
+++ b/gcc/testsuite/g++.dg/template/instantiate5.C
@@ -18,7 +18,12 @@ struct B
template <typename T> struct C
{
- virtual void bar() const { T::foo(); } // { dg-error "no matching function" }
+ virtual void bar() const // { dg-message "required" }
+ {
+ T::foo(); // { dg-error "no matching function" }
+ }
};
-C<B> c; // { dg-message "required" }
+C<B> c;
+
+int k;
diff --git a/gcc/testsuite/g++.dg/template/nontype-fn1.C b/gcc/testsuite/g++.dg/template/nontype-fn1.C
new file mode 100644
index 00000000000..12d29a91a54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/nontype-fn1.C
@@ -0,0 +1,11 @@
+// PR c++/82664
+
+template < typename > struct target_disambiguator;
+template < typename R, typename A1 > struct target_disambiguator< R(A1) > {
+ typedef A1 type;
+ template < R (&)() > struct layout;
+};
+
+int main() {
+ typedef target_disambiguator< void (int) > ::type target_type ;
+}
diff --git a/gcc/testsuite/g++.dg/template/overload15.C b/gcc/testsuite/g++.dg/template/overload15.C
new file mode 100644
index 00000000000..ea0e548843d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/overload15.C
@@ -0,0 +1,16 @@
+// PR c++79064 - Cannot overload member function templates on type of literal
+// { dg-do compile }
+
+template <unsigned N>
+void f (char (*)[0u - 1 > N ? 1 : 7]);
+
+template <unsigned N>
+void f (char (*)[0u - 1ll > N ? 1 : 7]);
+
+void f ()
+{
+ char x[1], y[7];
+
+ f<0>(&x);
+ f<0>(&y);
+}
diff --git a/gcc/testsuite/g++.dg/template/sizeof16.C b/gcc/testsuite/g++.dg/template/sizeof16.C
new file mode 100644
index 00000000000..084bb2185c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sizeof16.C
@@ -0,0 +1,7 @@
+// PR c++/84333
+// { dg-options -Wno-pedantic }
+
+template<typename> int foo()
+{
+ return sizeof(int) > 1 ? : 1;
+}
diff --git a/gcc/testsuite/g++.dg/template/sizeof17.C b/gcc/testsuite/g++.dg/template/sizeof17.C
new file mode 100644
index 00000000000..2d5892d2c8b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sizeof17.C
@@ -0,0 +1,7 @@
+// PR c++/84333
+// { dg-options -Wno-pedantic }
+
+template<typename T> int foo()
+{
+ return sizeof(T) > 1 ? : 1;
+}