What about RVO and NRVO?
You still can bind a temporary to a const reference. This is a simple example on how it is possible to do optimizations. Or am I mistaken?
Example:
std::string foo();
void bar()
{
std::string const& bound_temporary = foo();
std::cout << bound_temporary;
}
whereas this is invalid:
void invalid_bar()
{
std::string& bound_temporary = foo(); //will not work, but AFAIK some compilers support it
}
So compilers can do optimizations based on constness.
Regards,
Ovanes
On Thu, Mar 19, 2009 at 3:49 PM, Ovanes MarkarianConst in a reference is merely part of the type safety system.
<om_boost@keywallet.com> wrote:
> For boost::shared_ptr it's the same. Nothing is copied in both cases. Some
> compilers might (which is under doubt) optimize it better. Since const is an
> additional information for them, that the object is not going to change
> within the called function.
Compilers can not do optimizations based on the constness of a
reference, all they can do is report errors.
Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode