[Bug c++/27295] Compiler expects public access of copy constructor eventhough the cp ctr never get's invoked.
ram dot misc at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Apr 24 23:24:00 GMT 2006
------- Comment #1 from ram dot misc at gmail dot com 2006-04-24 23:24 -------
Correction:
Bug/problem context is GCC 3.4.5 (not 2.4.5)
Thank you.
(In reply to comment #0)
> The foll. code works with GCC 2.95.2; however, it fails compile on GCC 2.4.5.
> Whenever an anonymous object is passed as function argument, the compiler is
> expecting "public access" to the copy constructor of the passed type - even
> though the cp ctr never get's invoked.
> ====================================
> compilation error: [g++ 3.4.5]
> private_cp_ctr.cc: In function `int main()':
> private_cp_ctr.cc:42: error: `Foo::Foo(const Foo&)' is private
> private_cp_ctr.cc:60: error: within this context
> ====================================
> code:
> #include <cstdio>
> class Foo
> {
> public:
> Foo()
> {
> printf( "ctr called.\n" );
> }
> private:
> Foo(const Foo&) // problem location
> {
> printf( "cp ctr called.\n" );
> }
> };
> void evaluate(const Foo& ref)
> {
> printf( "evaluate called.\n" );
> }
> int main()
> {
> Foo f;
> evaluate(f); // ok: no compile error
> // problem context. compiler checks for copy ctr public visibility
> // eventhough the copy ctr never get's invoked in the context.
> evaluate(Foo());
> return 0;
> }
> ==================================
> Thankyou.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27295
More information about the Gcc-bugs
mailing list