This is a little wrong D2 program:
void bar(const int data) {
auto d = data;
d = data;
}
void main() {}
With the error message DMD gives it's easy to understand the error and fix it:
test.d(3): Error: variable test.bar.d cannot modify const
This is a similar program that uses a Tuple instead of an int:
import std.typecons;
alias Tuple!(int) Foo;
void bar(const Foo data) {
auto d = data;
d = data;
}
void main() {}
But now the errors given are not so easy to understand:
test.d(5): Error: template std.typecons.Tuple!(int).Tuple.opAssign(R) if
(isTuple!(R)) does not match any function template declaration
test.d(5): Error: template std.typecons.Tuple!(int).Tuple.opAssign(R) if
(isTuple!(R)) cannot deduce template function from argument types
!()(const(Tuple!(int)))
Being that "d" a const Foo struct, that you can never be assigned to, can't DMD
give a nicer error message, like in the first program?
Bye,
bearophile