<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 3, 2014 at 4:42 PM, Chris Lattner <span dir="ltr"><<a href="mailto:sabre@nondot.org" target="_blank">sabre@nondot.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ok, can this be generalized into guidance we can put in the coding standards?</blockquote></div><br>I mean, maybe. I'm not sure it comes up frequently enough to be worth space.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">My off-the-cuff idea of how to say this in the guide would be:</div><div class="gmail_extra"><br></div><div class="gmail_extra">"""</div><div class="gmail_extra">
When providing getters and setters in APIs they should generally have value semantics: the returned object from a getter should be immutable or a copy, and arguments to the setter should be copied into the object. Naturally, if the member is itself a pointer, this applies to the pointer and not the pointee. If you are providing access to contained objects through some transparent view like iterators, ranges, or adaptors these should have reference semantics and be distinct from either a getter or a setter.</div>
<div class="gmail_extra">"""</div><div class="gmail_extra"><br></div><div class="gmail_extra">But this isn't terribly satisfying to me as a rule. It's much easier to talk in context about specific APIs than provide this level of guidance IMO.</div>
</div>