Huh? I don't think you understand what I mean. inout only implicitly converts to const. Example:

struct S
{
   bool opEquals(S rhs){return false;}
}

struct T
{
   S s;
   bool opEquals(auto ref inout T rhs) inout {
return s == rhs.s; // error, cannot call S.opEquals(S rhs) with parameters (inout S) inout
   }
}

You gain nothing from making opEquals of Tuple inout vs. const.

IMO all opEquals should be const functions, and the parameter should be const if it is marked as ref, or it contains references.

You are right. Reading it again, using inout is wrong here, both as parameter and function qualifier. Only thing missing here is auto ref being broken(?). Using inout in parameter list already giving error here as it should.

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to