[comp.lang.c++] error: initializer for non-const reference not an lvalue ??

euamts@eua.ericsson.se (Mats Henricson) (12/14/90)

Gee...

I have had this weird bug on my screen for two days now and I'm getting mad.
The thing is, I'm implementing a string-class in much the same way as NIH
and the gnu-library. This means having a substring-class doing some dirty
work for the ordinary string-class.
   The problem is when I try to overload the + operator for reversed left
and right valuses, i.e.:

     friend String operator+(const char*, const SubString&);

When I try to use it in statements like:

     String a = "I like C++";
     String b;
     b = "I don't " + a(2,8);      //error

I get the terrific report saying:
    error: initializer for non-const reference not an lvalue

The function has to be friend to both String and SubString, but I don't think
the problem is because of anything related to the friendness to both these
functions. The problem is no doubt related to the friendness, since other
similar friend-functions gives the same error. If I do the reversed thing
with the member-operator+ :

     b = a(7,3) + " can make you sick";

Is there anyone out there that might know what all this is about, or do you
need more information?

Mats Henriksson / mats.henriksson@eua.ericsson.se