* class.c (maybe_warn_about_overly_private_class): Lazy
constructors are public.
PR c++/21347
* g++.dg/warn/Wctor-dtor.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105441
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-10-15 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21347
+ * class.c (maybe_warn_about_overly_private_class): Lazy
+ constructors are public.
+
2005-10-14 Mark Mitchell <mark@codesourcery.com>
PR c++/19565
return;
}
- if (TYPE_HAS_CONSTRUCTOR (t))
+ if (TYPE_HAS_CONSTRUCTOR (t)
+ /* Implicitly generated constructors are always public. */
+ && (!CLASSTYPE_LAZY_DEFAULT_CTOR (t)
+ || !CLASSTYPE_LAZY_COPY_CTOR (t)))
{
int nonprivate_ctor = 0;
+2005-10-15 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21347
+ * g++.dg/warn/Wctor-dtor.C: New test.
+
2005-10-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c/23439
--- /dev/null
+// PR c++/21347
+// { dg-options "-Wctor-dtor-privacy" }
+
+class A {
+public:
+ int x;
+ int getX() { return x; } // comment out to avoid warning
+};
+
+int foo() {
+ A a; // accepted: clearly the ctor is not private
+ return a.x;
+}