<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    On 4/10/2012 3:59 AM, Steve Schveighoffer wrote:
    <blockquote
      cite="mid:1334055586.48292.YahooMailNeo@web161701.mail.bf1.yahoo.com"
      type="cite">
      <div style="color: rgb(0, 0, 0); background-color: rgb(255, 255,
        255); font-family: arial,helvetica,sans-serif; font-size: 12pt;">
        <div><span>If I understand correctly (and I very well might
            not), the idea is that auto ref is *always* ref, so only one
            function is generated.</span></div>
      </div>
    </blockquote>
    <br>
    No. Two functions are generated.<br>
    <br>
    <blockquote
      cite="mid:1334055586.48292.YahooMailNeo@web161701.mail.bf1.yahoo.com"
      type="cite">
      <div style="color:#000; background-color:#fff; font-family:arial,
        helvetica, sans-serif;font-size:12pt">
        <div><span>  The main difference between auto ref and ref is
            that ref doesn't allow rvalues.  Saying auto ref is
            basically like saying to the compiler: "yeah, I know it's an
            rvalue, still pass it as ref".<br>
          </span></div>
        <div><br>
        </div>
        <div>If that's correct, I think the way to look at it is these
          three situations:</div>
        <div><br>
        </div>
        <div>1. I want to change the value, and/or I want to disallow
          rvalues: use ref</div>
        <div>2. I want to pass by reference because the struct is large:
          use auto ref (includes rvalues), possibly const as well.<br>
        </div>
        <div>3. I want to optimize passing large structs for both
          rvalues and lvalues: use two overloads, one with const ref,
          one by value.</div>
        <div><br>
          <span></span></div>
        <div><span>Andrei, I hate to ask this, because I feel very
            confused from all the statements you have previously made,
            but could you explain this again?</span></div>
        <div><br>
          <span></span></div>
        <div><span>To be honest, if what I've said is correct, it still
            sounds so clunky and awkward...</span></div>
        <div><br>
          <span></span></div>
        <div><span>-Steve<br>
          </span></div>
        <div><br>
          <blockquote style="border-left: 2px solid rgb(16, 16, 255);
            margin-left: 5px; margin-top: 5px; padding-left: 5px;">
            <div style="font-family: arial, helvetica, sans-serif;
              font-size: 12pt;">
              <div style="font-family: times new roman, new york, times,
                serif; font-size: 12pt;">
                <div dir="ltr"> <font face="Arial" size="2">
                    <hr size="1"> <b><span style="font-weight:bold;">From:</span></b>
                    Walter Bright <a class="moz-txt-link-rfc2396E" href="mailto:walter@digitalmars.com"><walter@digitalmars.com></a><br>
                    <b><span style="font-weight: bold;">To:</span></b>
                    Discuss the dmd beta releases for D
                    <a class="moz-txt-link-rfc2396E" href="mailto:dmd-beta@puremagic.com"><dmd-beta@puremagic.com></a> <br>
                    <b><span style="font-weight: bold;">Sent:</span></b>
                    Monday, April 9, 2012 11:55 PM<br>
                    <b><span style="font-weight: bold;">Subject:</span></b>
                    Re: [dmd-beta] D 2.059 beta 4<br>
                  </font> </div>
                <br>
                <br>
                <br>
                On 4/9/2012 7:44 PM, Jonathan M Davis wrote:<br>
                > On Monday, April 09, 2012 19:40:43 Walter Bright
                wrote:<br>
                >> On 4/9/2012 7:32 PM, Nick Sabalausky wrote:<br>
                >>> Although, if there really is good merit to
                struct lits not veing lvalues,<br>
                >>> then maybe all we need is to wait until
                "auto ref" is usable for<br>
                >>> non-templates? (If that would even be
                possible...?)<br>
                >> Not possible, as the binary ABI would be
                different.<br>
                > It was my understanding that the auto ref was
                supposed to work with non-<br>
                > templated functions - at least what Andrei proposed
                was - but that you<br>
                > misunderstood that and made it only work with
                templates. And as long as it<br>
                > only works with templates, it's usefulness is very
                limited. opEquals would be<br>
                > a _prime_ case for where it would be useful.<br>
                ><br>
                <br>
                How could that possibly work for the same function,
                considering that the code <br>
                for each would be quite different, including the calling
                code?<br>
                <br>
                _______________________________________________<br>
                dmd-beta mailing list<br>
                <a moz-do-not-send="true"
                  ymailto="mailto:dmd-beta@puremagic.com"
                  href="mailto:dmd-beta@puremagic.com">dmd-beta@puremagic.com</a><br>
                <a class="moz-txt-link-freetext" href="http://lists.puremagic.com/mailman/listinfo/dmd-beta">http://lists.puremagic.com/mailman/listinfo/dmd-beta</a><br>
                <br>
                <br>
              </div>
            </div>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
dmd-beta mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dmd-beta@puremagic.com">dmd-beta@puremagic.com</a>
<a class="moz-txt-link-freetext" href="http://lists.puremagic.com/mailman/listinfo/dmd-beta">http://lists.puremagic.com/mailman/listinfo/dmd-beta</a></pre>
    </blockquote>
  </body>
</html>