On Monday, 21 April 2014 at 16:35:23 UTC, Artur Skawina via
Digitalmars-d wrote:
On 04/21/14 14:45, Steven Schveighoffer via Digitalmars-d wrote:
Reasons off the top of my head not to make them module
functions:
[...]
Functions, unlike methods, do not work with rvalues.
Ie
struct S {
long[999999] data;
auto f() { return data[0]; }
}
auto g(ref S _this) { with (_this) return data[1]; }
void main() {
auto a = S().f();
auto b = S().g();
}
artur
Shouldn't this be possible if you want to make g a template
function and use auto ref? Regardless, it doesn't. Probably a
compiler bug:
struct S {
long[999999] data;
auto f() { return data[0]; }
}
//No good
//auto g(T: S)(auto ref T _this) { with (_this) return data[1];
}
//Doesn't work either
//auto g()(auto ref S _this) { with (_this) return data[1]; }
void main() {
auto a = S().f();
auto b = S().g();
}