On 03/08/2010 6.12,
, India wrote:
[...]
> int main()
> {
> const Test& ref = Test();
> cout<< ref<< endl;
>
> return EXIT_SUCCESS;
> }
>
> When I compile this program as
> g++ -std=c++98 -pedantic -Wall -Wextra x.cpp
>
> I get the following compilation error:
> x.cpp: In function `int main()':
> x.cpp:12: error: `Test::Test(const Test&)' is private
> x.cpp:33: error: within this context
>
> Though the copy ctor of Test is private, the statement
> const Test& ref = Test();
> involves only taking a 'const reference' to the temporary Test object
> created by Test() on the RHS. Since only a reference is made, why does
> this statement require the copy ctor ?
> Kindly clarify, if necessary with a program example.
I don't know if this is in the FAQ but it should be

C++98
required this.
And although it allowed the copy to be omitted it required the
copy constructor to be accessible anyway, so that your code
would not suddenly broke because you switched from a compiler
that omitted the copy to one that didn't.
C++0x has a different rule; see core issue 391:
<http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#391>
--
Gennaro Prota | name.surname yahoo.com
Breeze C++ (preview): <https://sourceforge.net/projects/breeze/>
Do you need expertise in C++? I'm available.