aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGiovanni Bajo <giovannibajo@libero.it>2003-11-14 06:13:45 +0100
committerBernardo Innocenti <bernie@gcc.gnu.org>2003-11-14 06:13:45 +0100
commitaede75ed619d58117c8b544975eeedccadece34c (patch)
treec929aecd9a5e271735c3cbb6814af0c943262cf1 /gcc
parent28e8f3a00ee4012f8642a68c9b4f4845436b77a4 (diff)
downloadgcc-aede75ed619d58117c8b544975eeedccadece34c.zip
gcc-aede75ed619d58117c8b544975eeedccadece34c.tar.gz
gcc-aede75ed619d58117c8b544975eeedccadece34c.tar.bz2
re PR c++/2094 (unimplemented: use of `ptrmem_cst' in template type unification)
PR c++/2094 * g++.dg/template/ptrmem7.C: New test. From-SVN: r73578
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/ptrmem7.C43
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a959079..845b6f1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-11-14 Giovanni Bajo <giovannibajo@libero.it>
+
+ PR c++/2094
+ * g++.dg/template/ptrmem7.C: New test.
+
2003-11-13 Andrew Pinski <apinski@apple.com>
* gcc.c-torture/compile/20031113-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/template/ptrmem7.C b/gcc/testsuite/g++.dg/template/ptrmem7.C
new file mode 100644
index 0000000..59b28a3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ptrmem7.C
@@ -0,0 +1,43 @@
+// { dg-do compile }
+// Origin: <togawa at acm dot arg>
+// c++/2094: unsupported 'ptrmem_cst' in type unification
+
+struct R
+{
+ int i;
+};
+
+struct S
+{
+ int i;
+ int j;
+};
+
+struct S2 : S
+{};
+
+template<int S::*p, typename>
+struct X
+{
+ X ();
+ template<typename U> X(const X<p,U> &);
+};
+
+X<&S::i,S> x = X<&S::i,S>();
+X<&S::i,S> x2 = X<&S2::i,S>();
+X<&S::i,S> y = X<&S::j,S>(); // { dg-error "" }
+X<&S::i,S> z = X<&R::i,S>(); // { dg-error "" }
+
+template <class T>
+struct Foo
+{
+ void foo(void)
+ {
+ X<&T::i,T> x = X<&T::i,T>();
+ X<&S::i,S> x2 = X<&S2::i,S>();
+ X<&S::i,S> y = X<&S::j,S>(); // { dg-error "" }
+ X<&S::i,S> z = X<&R::i,S>(); // { dg-error "" }
+ }
+};
+
+template struct Foo<S>; // { dg-error "instantiated from" }