diff options
author | fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-13 18:46:58 +0000 |
---|---|---|
committer | fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-13 18:46:58 +0000 |
commit | 3d79ce2db529e341705179e4c16b6edcc96c7685 (patch) | |
tree | 42d417ed9dfb4115cfed8440e8d3927916c549a9 /gcc/testsuite/g++.dg/template/using16.C | |
parent | 55072f2b8b90dec674be361b676b1da5fe9b3ff0 (diff) | |
download | ppe42-gcc-3d79ce2db529e341705179e4c16b6edcc96c7685.tar.gz ppe42-gcc-3d79ce2db529e341705179e4c16b6edcc96c7685.zip |
gcc/testsuite/ChangeLog
2011-12-11 Fabien Chene <fabien@gcc.gnu.org>
PR c++/14258
* g++.dg/template/using16.C: New.
* g++.dg/template/using17.C: New.
gcc/cp/ChangeLog
2011-12-11 Fabien Chene <fabien@gcc.gnu.org>
PR c++/14258
* cp-tree.h (USING_DECL_TYPENAME_P): New macro.
* parser.c (cp_parser_nonclass_name): Handle using declarations
that refer to a dependent type.
(cp_parser_using_declaration): Set USING_DECL_TYPENAME_P to 1 if
the using declaration refers to a dependent type.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182292 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/template/using16.C')
-rw-r--r-- | gcc/testsuite/g++.dg/template/using16.C | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/using16.C b/gcc/testsuite/g++.dg/template/using16.C new file mode 100644 index 00000000000..589f7f18f52 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using16.C @@ -0,0 +1,42 @@ +// { dg-do compile } + +template <class T> +struct A +{ + typedef T type; +}; + +template <class T> +struct B +{ + class type + { + type(); // { dg-error "private" } + }; +}; + +template <class T> +struct C : A<T>, B<T> +{ + using typename B<T>::type; + + void f() + { + type j; // { dg-error "context" } + } +}; + +template class C<int>; // { dg-message "required" } + +template <class T> +struct D +{ + typedef T type; +}; + +template <class T> +class E : D<T> +{ + using typename D<T>::type; // { dg-message "previous" } + using typename D<T>::type; // { dg-error "redeclaration" } +}; |