The solution to the latest GotW problem is now available:
GotW #92 Solution: Auto Variables, Part 1 (updated for C++11/14)
by Herb Sutter
From the article:
When you’re new to
auto
, the key thing to remember is that you really are declaring your own new local variable. That is, “what’s on the left” is my new variable, and “what’s on the right” is just its initial value:auto my_new_variable = its_initial_value;
You want your new variable to be just like some existing variable or expression over there, and be initialized from it, but that only means that you want the same basic type, not necessarily that other variable’s own personal secondary attributes such as top-level
const
-ness and reference-ness which are per-variable. For example, just because he’sconst
doesn’t mean you’reconst
, and vice versa.It’s kind of like being identical twins: Andy may be genetically just like his brother Bobby and is part of the same family, but he’s not the same person; he’s a distinct person and can make his own choice of clothes and/or jewelry, go to be seen on the scene in different parts of town, and so forth. So your new variable will be just like that other one and be part of the same type family, but it’s not the same variable; it’s a distinct variable with its own choice of whether it wants to be dressed with
const
and/or a reference, may be visible to different threads, and so forth.Remembering this will let us easily answer the rest of our questions...
Add a Comment
Comments are closed.