<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><span class="vcard"><a class="email" href="mailto:dblaikie@gmail.com" title="David Blaikie <dblaikie@gmail.com>"> <span class="fn">David Blaikie</span></a>
</span> changed
          <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Warns about lambda function based on the return type that is not what inferred return type is"
   href="https://bugs.llvm.org/show_bug.cgi?id=50003">bug 50003</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>dblaikie@gmail.com
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Warns about lambda function based on the return type that is not what inferred return type is"
   href="https://bugs.llvm.org/show_bug.cgi?id=50003#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Warns about lambda function based on the return type that is not what inferred return type is"
   href="https://bugs.llvm.org/show_bug.cgi?id=50003">bug 50003</a>
              from <span class="vcard"><a class="email" href="mailto:dblaikie@gmail.com" title="David Blaikie <dblaikie@gmail.com>"> <span class="fn">David Blaikie</span></a>
</span></b>
        <pre>Converting the lambda to a std::function doesn't change the type of the lambda.
The return type of the lambda is inferred by the type of the return statement
only.

Essentially the lambda this code creates is this:

auto unmentionable() {
  char t[10] = "abc";
  return t;
}
...
std::function<std::string()> f = unmentionable;

which results in a std::function that does something like this:

std::string func() {
  return unmentionable();
}

Because a char* is convertible to std::string, this ^ code compiles, but does
have the bug the diagnostic warns about - dangling pointer to a local variable.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>