diff options
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/refinit2.C | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ebfb0a4..96b5fd7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-08-14 Nathan Sidwell <nathan@codesourcery.com> + + * g++.old-deja/g++.other/refinit2.C: New test. + 2000-08-13 Geoff Keating <geoffk@cygnus.com> * lib/c-torture.exp (c-torture): Make diff --git a/gcc/testsuite/g++.old-deja/g++.other/refinit2.C b/gcc/testsuite/g++.old-deja/g++.other/refinit2.C new file mode 100644 index 0000000..1246e78 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/refinit2.C @@ -0,0 +1,18 @@ +// Build don't link: +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Aug 2000 <nathan@codesourcery.com> + +// bug 381. We gave slightly different diagnostics, when binding an rvalue to +// a non-const reference, depending on the precise type to the rvalue. + +namespace A { +template <class T> void f(T) {} +}; +void (* &h)(int) = A::f<int>; // ERROR - rvalue to non-const +void (*const volatile &i)(int) = A::f<int>; // ERROR - rvalue to volatile +void (*const &j)(int) = A::f<int>; + +int &k = 1; // ERROR - rvalue to non-const +int &const volatile l = 1; // ERROR - rvalue to volatile +int const &m = 1; |