* pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143445
138bc75d-0d04-0410-961f-
82ee72b054a4
2009-01-16 Jason Merrill <jason@redhat.com>
+ PR c++/29470
+ * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
+
PR c++/38579
* search.c (protected_accessible_p): N doesn't vary.
tsubst_copy (DECL_NAME (t), args, complain, in_decl));
if (!r)
r = error_mark_node;
+ else
+ {
+ TREE_PROTECTED (r) = TREE_PROTECTED (t);
+ TREE_PRIVATE (r) = TREE_PRIVATE (t);
+ }
}
else
{
+2009-01-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/29470
+ * g++.dg/template/access20.C: New test.
+ * g++.dg/torture/pr34641.C: Fix access.
+
2009-01-16 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38835
--- /dev/null
+// PR c++/29470
+
+template <typename T> struct B
+{
+ protected:
+ T v; // { dg-error "protected" }
+};
+template <typename T> struct D : B<T>
+{
+ protected:
+ using B<T>::v;
+};
+int main()
+{
+ D<int> d;
+ d.v = 0; // { dg-error "context" }
+ return 0;
+}
template < typename T > class VectorBuffer < T, 0 >:private VectorBufferBase <
T >
{
+public:
typedef VectorBufferBase < T > Base;
using Base::allocateBuffer;
};