<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Menlo;
        panose-1:2 11 6 9 3 8 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.imprintuniqueid, li.imprintuniqueid, div.imprintuniqueid
        {mso-style-name:imprintuniqueid;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a> might be a good place to send this as well, since it’s possible it’s a libc++ thing.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">cfe-dev <cfe-dev-bounces@lists.llvm.org> on behalf of cfe-dev <cfe-dev@lists.llvm.org><br>
<b>Reply-To: </b>Cyril Makloufi <Cyril.Makloufi@4d.com><br>
<b>Date: </b>Friday, January 8, 2021 at 2:45 AM<br>
<b>To: </b>cfe-dev <cfe-dev@lists.llvm.org><br>
<b>Subject: </b>[cfe-dev] Binary size when using std::function with lambda expression<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div id="divtagdefaultwrapper">
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">Hello,<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">When using std::function instead of function pointer (see the sample of code) on Mac, we get a huge difference between size of generated binary (80ko when using function pointer and 157ko
 whit std::function).<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">I use Xcode to build debug with -O0 -std=gnu++14 and libc++.<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">It doesn't seem to have the same result on windows or linux.<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">Is it something normal ?<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">Here's the code sample :<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal"><span style="font-size:9.0pt;font-family:Menlo;color:#FD8F3F">#include
</span><span style="font-size:9.0pt;font-family:Menlo;color:#FC6A5D"><iostream><o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal"><span style="font-size:9.0pt;font-family:Menlo;color:#FD8F3F">#include
</span><span style="font-size:9.0pt;font-family:Menlo;color:#FC6A5D"><functional><o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85);min-height: 14px">
<span style="font-size:9.0pt;font-family:Menlo;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85);min-height: 14px">
<span style="font-size:9.0pt;font-family:Menlo;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85)">
<b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">int</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#41A1C0">main</span><span style="font-size:9.0pt;font-family:Menlo;color:black">(</span><b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">int</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black">
 argc, </span><b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">const</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">char</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black"> * argv[]) {<o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85)">
<span style="font-size:9.0pt;font-family:Menlo;color:black">    </span><span style="font-size:9.0pt;font-family:Menlo;color:#D0A8FF">std</span><span style="font-size:9.0pt;font-family:Menlo;color:black">::</span><span style="font-size:9.0pt;font-family:Menlo;color:#D0A8FF">function</span><span style="font-size:9.0pt;font-family:Menlo;color:black"><</span><b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">void</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black">()>
 f = [](){</span><span style="font-size:9.0pt;font-family:Menlo;color:#D0A8FF">std</span><span style="font-size:9.0pt;font-family:Menlo;color:black">::</span><span style="font-size:9.0pt;font-family:Menlo;color:#A167E6">cout</span><span style="font-size:9.0pt;font-family:Menlo;color:black">
 << </span><span style="font-size:9.0pt;font-family:Menlo;color:#FC6A5D">"LOG2\n"</span><span style="font-size:9.0pt;font-family:Menlo;color:black">;};<o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal"><span style="font-size:9.0pt;font-family:Menlo;color:#6C7986">//    void (*f)() = [](){std::cout << "LOG3\n";};<o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85);min-height: 14px">
<span style="font-size:9.0pt;font-family:Menlo;color:black">    <o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85)">
<span style="font-size:9.0pt;font-family:Menlo;color:black">    f();<o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85);min-height: 14px">
<span style="font-size:9.0pt;font-family:Menlo;color:black">    <o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85)">
<span style="font-size:9.0pt;font-family:Menlo;color:black">    </span><b><span style="font-size:9.0pt;font-family:Menlo;color:#FC5FA3">return</span></b><span style="font-size:9.0pt;font-family:Menlo;color:black">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#D0BF69">0</span><span style="font-size:9.0pt;font-family:Menlo;color:black">;<o:p></o:p></span></p>
<p style="margin-left:.5in;background:#1F1F24;font-stretch: normal;color:rgba(255, 255, 255, 0.85)">
<span style="font-size:9.0pt;font-family:Menlo;color:black">}<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">Thanks,<o:p></o:p></span></p>
<p style="margin-left:.5in"><span style="font-size:12.0pt;color:black">Cyril<o:p></o:p></span></p>
</div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="600" style="width:6.25in;margin-left:.5in;border-collapse:collapse">
<tbody>
<tr>
<td width="55" valign="top" style="width:41.45pt;padding:5.25pt 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt"><img border="0" width="52" height="71" style="width:.5416in;height:.7395in" id="_x0000_i1025" src="cid:image001.jpg@01D6E5A0.4DC9D7D0"><o:p></o:p></span></p>
</td>
<td width="233" valign="top" style="width:174.4pt;padding:7.5pt 0in 0in 7.5pt">
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#274370">Cyril Makloufi</span></b><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666">Développeur</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#274370;display:none"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666">Email :</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><a href="mailto:Cyril.Makloufi@4d.com" title="Click to send email to Cyril Makloufi">Cyril.Makloufi@4d.com</a></span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666">Web :</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><a href="http://www.4d.com">www.4d.com</a></span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#A0A0A0"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
</td>
<td width="1" style="width:.8pt;padding:0in 0in 0in 0in"></td>
<td width="311" valign="top" style="width:233.35pt;padding:7.5pt 0in 7.5pt 0in">
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border:none;border-left:solid #274370 1.0pt">
<tbody>
<tr>
<td style="border:none;padding:0in 0in 0in 7.5pt">
<p class="MsoNormal"><b><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#CECECE">4D SAS</span></b><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border:none;padding:0in 0in 0in 7.5pt">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#CECECE">66 route de Sartrouville<br>
Parc Les Erables - Batiment 4</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border:none;padding:0in 0in 0in 7.5pt">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#CECECE">78230 Le Pecq - France</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size:7.0pt;display:none"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border:none;border-left:solid #274370 1.0pt">
<tbody>
<tr>
<td style="border:none;padding:0in 0in 0in 7.5pt">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#CECECE">Standard :</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><o:p></o:p></span></p>
</td>
<td style="border:none;padding:0in 0in 0in 7.5pt">
<p class="MsoNormal"><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#CECECE">+33 1 30 53 92 00</span><span style="font-size:7.0pt;font-family:"Verdana",sans-serif;color:#666666"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="imprintuniqueid" style="margin-left:.5in"><span style="font-size:7.0pt;color:#FF6600;display:none"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="300" style="width:225.0pt;margin-left:.5in;border-collapse:collapse">
<tbody>
<tr>
<td style="padding:0in 0in 0in 18.75pt"></td>
</tr>
</tbody>
</table>
<p class="imprintuniqueid" style="margin-left:.5in"><span style="font-size:7.0pt;color:#FF6600"><o:p> </o:p></span></p>
<p style="margin-left:.5in">  <o:p></o:p></p>
</div>
</body>
</html>