On Wednesday, 14 July 2021 at 16:55:30 UTC, Ogi wrote:
>Except when they are attributes — when applied to member functions.
No, then they are still type constructors. This:
struct S {
void f() const {
}
}
Is roughly equal to this:
void f(ref const S this) {
}
> It makes no sense that const int
variable is a constant integer while const int function()
is a constant member function of some struct or class that returns non-constant integer.
return, scope, const, inout, immutable, shared outside the parameter list all apply to the implicit this
parameter. The syntax is confusing, but there are multiple solutions. Adding @
variants for all type constructors is one of them, but that doesn't make it relevant to a DIP about function attributes.