Notation of "A Proposal to Add an Rvalue Reference to the C++Language"

A

aitorf666

Hi,
I have been reading the improvement that will be made to C++0x, and
one of this is "A Proposal to Add an Rvalue Reference to the C++
Language" , which will add a double &, for example:

int someFunction(int && a){ ...

the reason is to allow to change temporaries passed to functions. Due
to:

void f(int& a);
void ff(const int& a);
...
int x = 5;
f(x); //ok
ff(x); //ok
f(2); // error, not to make mistakes
ff(2); //ok

to can pass changeable temporaries, it has been proposed the syntax
int&&, which I thought is naughty.
void g(int&& a){ a = 0; }
g(2); //ok

Would not be better the following syntax? -> instead of int&& ,
mutable int&

The mutable word means "not const", and is used for const member
functions to allow changing values.

I think it has much more logic to:

void f(int& a);
void ff(const int& a){ //perform some task without the possibility of
changing a}
void g(mutable int& a){ a = 0; //for example }

int x = 5;
f(x); //ok
ff(x);//ok
g(x); // better to be an error to avoid silly mistakes
f(2); //error
ff(2); // not an error, but we can´t change the value which is we
really want
g(2); //ok, we can do it.

My proposal is to change '&&' for 'mutable &'
 
J

Jerry Coffin

Hi,
I have been reading the improvement that will be made to C++0x, and
one of this is "A Proposal to Add an Rvalue Reference to the C++
Language" , which will add a double &, for example:

int someFunction(int && a){ ...

the reason is to allow to change temporaries passed to functions. Due
to:

That's not the real reason for rvalue references. There are two primary
reasons for rvalue references: providing move semantics, and providing
forwarding semantics.

The ability to modify the original object with impunity is the
_mechanism_ behind the move semantics. Looking at this as 'mutable',
however is looking at how you do one thing with rvalue references,
rather than looking at what the rvalue reference itself really is.

This would also completely ignore the other major use of rvalue
references, which is forwarding. In this case, the ability to modify the
original item is entirely beside the point -- it's mostly about avoiding
providing lots of overloads of forwarding functions.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top