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();
  }

Reply via email to