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

Reply via email to