warning: returning reference to temporary

c++, reference

Solution

This is an example when an unwanted implicit conversion takes place. `""` is not a `std::string`, so the compiler tries to find a way to turn it into one. And by using the `string( const char* str )` constructor it succeeds in that attempt. Now a temporary instance of `std::string` has been created that will be deleted at the end of the method call. Thus it's obviously not a good idea to reference an instance that won't exist anymore after the method call.

I'd suggest you either change the return type to `const string` or store the `""` in a member or static variable of `SomeClass`.

Problem

I have a function like this ``` const string &SomeClass::Foo(int Value) { if (Value < 0 or Value > 10) return ""; else return SomeClass::StaticMember[i]; } ``` I get `warning: returning reference to temporary`. Why is that? I thought the both values the function returns (reference to const char* "" and reference to a static member) cannot be temporary.

Original source