digitalmars.D - Uniform call syntax for operator overloads
- Tomek =?UTF-8?B?U293acWEc2tp?= <just ask.me> Jul 25 2010
- bearophile <bearophileHUGS lycos.com> Jul 25 2010
- Tomek =?UTF-8?B?U293acWEc2tp?= <just ask.me> Jul 25 2010
- Daniel Keep <daniel.keep.lists gmail.com> Jul 27 2010
This doesn't work:
int opIndex(int[][] m, uint i, uint j) { return m[i][j]; }
unittest {
auto m = [[9,8], [2,3]];
auto a = m[0,1];
}
It's so by design or by bug?
Tomek
p.s. Where on D page is uniform call syntax documented? Couldn't find it in
functions section.
Jul 25 2010
Tomek S.:This doesn't work: int opIndex(int[][] m, uint i, uint j) { return m[i][j]; }
That's cute, but in D overloaded operator can be defined inside structs/classes/unions only (this is different from C++). Bye, bearophile
Jul 25 2010
bearophile wrote:Tomek S.:This doesn't work: int opIndex(int[][] m, uint i, uint j) { return m[i][j]; }
That's cute, but in D overloaded operator can be defined inside structs/classes/unions only (this is different from C++).
Yeah, I know, but why? What bad would happen if operators could be written down with functions-as-members syntax? Tomek
Jul 25 2010
Tomek SowiĆski wrote:bearophile wrote:Tomek S.:This doesn't work: int opIndex(int[][] m, uint i, uint j) { return m[i][j]; }
structs/classes/unions only (this is different from C++).
Yeah, I know, but why? What bad would happen if operators could be written down with functions-as-members syntax? Tomek
Universal Call Syntax is actually just a really old bug in method lookup for arrays that was never fixed on account of being useful. That it doesn't work for operators is hardly surprising.
Jul 27 2010








Daniel Keep <daniel.keep.lists gmail.com>