Emil,
I know that the second snippet is illegal in C++, but your statement was that const is only a part of type system and has no impact on optimization, I just answered you with my doubts, and made a first obvious example with NRVO, which highly depends on const.
const might also involve some optimizations, e.g. in multi-threaded context. Let's imagine a value being passed to a function by const reference. This function starts 2 or more threads and passes the value to them as reference to a const object as well. What happens in this context? As long it is not volatile it might be cached in a register, but I think that if the value is const, compiler has stronger assumption, that this value is good enough to be cached for all threads...
On Thu, Mar 19, 2009 at 4:29 PM, Ovanes Markarian
<om_boost@keywallet.com> wrote:
> What about RVO and NRVO?Right, your first snippet is valid and the second is ill-formed.
>
> 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
> }
What optimizations do you have in mind? The second snippet is simply
> So compilers can do optimizations based on constness.
illegal C++ (should not compile.)
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users