[LLVMdev] [cfe-dev] C++11 reverse iterators (was C++11 is here)

Chandler Carruth chandlerc at google.com
Mon Mar 3 10:29:17 PST 2014


On Mon, Mar 3, 2014 at 9:48 AM, Chris Lattner <sabre at nondot.org> wrote:

> In the best case 'get' doesn't really add any meaning, and in the worst
> case it is actively misleading
>
>
> It's getting the range though, just like Function::getArgumentList()
> returns the argument list.
>

I really disagree (and I disagree with getArgumentList for the same reason).

getFoo should return something with value semantics (even if its a const
reference to delay the copy). setFoo should directly mutate something.

What we're really doing is making the equivalent of a "member-like
accessor" method.


>
> For example, you might iterate over operands, and assign through the
> iterator to mutate them.
>
> Really, these operate as range-views over some sequence. It seems
> particularly easy to teach foo_begin(), foo_end() -> foos() as well.
>
>
> That's a very objective-c thing to do :-), they use the pattern foo() and
> setFoo() for the getter and setter, respectively (and the naming is baked
> into the property model).  I don't feel strongly against it, but we pretty
> consistently use the Java style 'get' prefix everywhere else.
>

If we have a setFoo, then I'm with you we should have a value-semantic
getFoo. But we have just plain "op_begin" and "op_end" and I think that
makes sense to extend to a range adaptor "operands".
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140303/dfe89509/attachment.html>


More information about the llvm-dev mailing list