S
sachingoel82
Hi All,
I find following C++ behaviour regarding temporary objects quite
contradictory. Consider this:
class A
{
...
public:
void bar () { ... } // non-const member function
};
A getA () { ... } // return an object
void foo (A& a) { ... }
int main ()
{
foo (getA ()); // error: not allowed to pass temporary object as
non-const reference. acceptable.
getA ().bar (); // why is this allowed ?? calling a non-const
functrion on a temporary object ?
}
Any ideas why it could be so ?
If passing a temporary object as non-const reference is not allowed
because making changes to it doesn't make sense, doesn't same thing
apply to calling non-const member function on a temporary ?
I find following C++ behaviour regarding temporary objects quite
contradictory. Consider this:
class A
{
...
public:
void bar () { ... } // non-const member function
};
A getA () { ... } // return an object
void foo (A& a) { ... }
int main ()
{
foo (getA ()); // error: not allowed to pass temporary object as
non-const reference. acceptable.
getA ().bar (); // why is this allowed ?? calling a non-const
functrion on a temporary object ?
}
Any ideas why it could be so ?
If passing a temporary object as non-const reference is not allowed
because making changes to it doesn't make sense, doesn't same thing
apply to calling non-const member function on a temporary ?