On Saturday, 30 March 2024 at 21:07:35 UTC, Nick Treleaven wrote:
Although `.stringof` on a function type does include the
parameter names, the names are not really part of the type -
see:
https://github.com/dlang/phobos/pull/3620#issuecomment-288469685
Perhaps `ParameterIdentifierTuple` should give a compile error
when given a function type.
I'm inclined to a view that keeps more "it just works" options
open. Regard the parameter names as a part of the type (which I
am very grateful for them being currently) and just regard part
of the definition of "type equality" as being to ignore parameter
names when comparing types.
With this viewpoint, ParameterIdentifierTuple should be repaired
to work with function types just as it works with functions, and
the current behavior is a bug.
Incidentally, I tried
```D
extern typeof(foo) func;
```
to say that func was an actual function (`extern` so defined
elsewhere) whose type was the type of the function `int foo(int
num, string name, int);` so I can then use
`ParameterIdentifierTuple` on a function, not a type, but the
compiler said `bug1.d(5): Error: variable ``bug1.func`` cannot be
declared to be a function`. Seems unreasonable given the implied
semantics.