This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: initialization of non-const reference


Sjoerd Adema <sjoerd@axy.nl> writes:

> Hi,
> 
> I am in big trouble :-(
> 
> My databasesoftware contains the following code:
> 
> class genericObj {
> ...
> public:
> 	genericObj( ..., const SetObj& set );
> ...
> };
> 
> class myObj : public genericObj {
> ...
> public:
> 	myObj() : genericObj(..., SetObj() ) {}
> ...
> };

Please supply a complete example; the ...s you obscure
  the problem.

With gcc 2.95.2, the following compiles with no errors:

struct Foo
{};

struct Base
{
  Base(Foo const& c):i(c){}
  Foo i;
};

struct Derived:Base
{

  Derived(Foo const& c)
    :Base(c){}
};

int main()
  {
    Derived d(Foo());
  }


> 
> when I compile the sourcecode I get the compiler error: initialization
> of non-const reference type `class SetObj &`
> 
> Bjarne Stroustrup tells in his book section 10.4.10 "A temporary can be
> used as an initializer for a CONST reference or a named object."
> 
> Tons of code is written like this, so it is a huge problem for me.
> 
> Am I missing something here ?

Yes - an example sufficient to reproduce the bug. :-)

> I use Suse Linux 6.4 with gcc 2.95-2
> 
> Any help would be highly appreciated.
> 

Thank you for your bug report.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]