Hi Ben
Thanks for the replying.

But it's seems like I didn't push my problem clearly . 
Let me make it simpler.
how a non const reference of a value can guarantee multipe calls are safe ? 
e.g : 
first call return value like:
string &first_ret = fun();

second call return value like:

string &second_ret = fun();

because both "first_ret" and "second_ret" are not copy of the fun() return value, they are the right current value.
so that we can say these calls are "safe" ?

From: Ben Pope
Date: 2015-02-16 00:03
To: boost-users
Subject: Re: [Boost-users] [future] Confused about the represents in Doc "boost::future"
On Sunday, February 15, 2015 11:55 AM, Cheng Mo wrote:
> Hi all :
> I got confused in Doc of boost :: futures and I can't got the point of
> sort of terms.
> The represents in Overvies of Futures like
> " Instances can be freely copied and assigned,
> and|boost::shared_future<R>::get()|
> <http://www.boost.org/doc/libs/1_57_0/doc/html/thread/synchronization.html#thread.synchronization.futures.reference.shared_future.get>returns
> a non|const|reference so that multiple calls
> to|boost::shared_future<R>::get()|
> <http://www.boost.org/doc/libs/1_57_0/doc/html/thread/synchronization.html#thread.synchronization.futures.reference.shared_future.get>are
> safe."
> no doubt that a const reference .... are safe.
> a non const reference could be changed by external stimuli. isn't ?
> Or the key is "Instances can be freely copied" , so that we can say "are
> safe"?
If you click on that link it says:
"shared_future<R>::get() returns a const reference to the value stored
in the shared state"
It's a typo, it should be const&, the contained value is not copied when
the shared_future is copied.
Boost-users mailing list