Warning on template parameter identifier shadowing?
Paul Backus
snarwin at gmail.com
Wed Aug 5 16:35:12 UTC 2020
On Wednesday, 5 August 2020 at 16:22:48 UTC, Steven Schveighoffer
wrote:
> On 8/5/20 12:10 PM, Paul Backus wrote:
>>
>> Not a fan. There are cases where I've done this
>> intentionally--not with eponymous template members, but with
>> private helper templates:
>>
>> template foo(T) {
>> enum helper(T) = ...; // error?
>> void foo(T i) {
>> static if (helper!T) ...;
>> else ...;
>> }
>> }
>
> I've intentionally done that, and even though it worked,
> rewrote the template parameter names because it's confusing to
> read.
>
> It would have to be a long deprecation cycle.
>
> I would be in favor of the change.
>
> -Steve
"Confusing to read" does not justify a compiler warning. The
compiler accepts lots of code that's confusing to read.
The appropriate place for a rule like this is in a style guide or
a configurable linter.
(This would also interact very badly with string-based code
generation, since there's no reliable way to generate unique
identifiers at compile time.)
More information about the Digitalmars-d
mailing list