Sirraide wrote:

> I am not sure removing const everywhere for one usage is a net-positive. 
> There are no reason for template arguments to ever be modified.

I can’t say I know the full scope of this refactor (as in, what it would 
actually take to remove all of these `const_cast`s for good, because if I 
understand this correctly, this is only supposed to be the first step here 
because it ends up adding more `const_cast`s than it removes, from what I can 
tell), but I guess my two cents is that, while that statement makes sense to 
me, my understanding is that e.g. AST nodes in general aren’t really *supposed* 
to be modified after creation, but we have to do that in a bunch of places 
anyway. This just seems like another example of that.

I’m not sure keeping `const` everywhere and pretending like we don’t do that, 
only to then happily `const_cast` it away whenever it turns out that, actually, 
we *do* need to modify this thing after all, is really that helpful. Does 
`const` really mean anything at that point if, in practice, it ends up being 
used to signify that ‘this API *probably* doesn’t modify this thing, unless it 
has to, in which case it does’? 

I’m sure that’s not the case in every place we use `const`, but I’ve seen it 
often enough to where whenever I now see `const` somewhere on a function 
parameter in Clang, I’m never quite sure whether that function *actually* 
doesn’t modify that argument, or whether it’s just `const` because the argument 
just happens to be `const` everywhere we call that function.

> I would like to see explored a solution that clones 
> MultiLevelTemplateArgumentList instead of mutating it in place

I might be missing a bit of the context here, but wouldn’t that have a 
performance impact? But, yeah, I suppose, as you said, someone would probably 
have to benchmark that.

https://github.com/llvm/llvm-project/pull/104687
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to