[#FOLLY_DETAIL_LITE_TUPLE_ADJUST_WARNINGS]
= FOLLY&lowbar;DETAIL&lowbar;LITE&lowbar;TUPLE&lowbar;ADJUST&lowbar;WARNINGS
:mrdocs:

Any file constructing `lite&lowbar;tuple` should contain this after `&num;include`s&colon; FOLLY&lowbar;PUSH&lowbar;WARNINGS FOLLY&lowbar;DETAIL&lowbar;LITE&lowbar;TUPLE&lowbar;ADJUST&lowbar;WARNINGS Followed by `FOLLY&lowbar;POP&lowbar;WARNING` at the bottom&period; The reason is that `&hyphen;Wmissing&hyphen;braces` otherwise breaks deduction guides, and makes aggregate initialization a real headache to use&colon; lite&lowbar;tuple&colon;&colon;tuple t&lcub;1, 2, 3&rcub;&semi; &sol;&sol; before &colon;) lite&lowbar;tuple&colon;&colon;tuple&lt;int&gt; t&lcub;&lcub;&lcub;1&rcub;, &lcub;2&rcub;, &lcub;3&rcub;&rcub;&rcub;&semi; &sol;&sol; after &colon;&apos;(

== Synopsis

Declared in `&lt;folly&sol;detail&sol;tuple&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
#define FOLLY&lowbar;DETAIL&lowbar;LITE&lowbar;TUPLE&lowbar;ADJUST&lowbar;WARNINGS

----

== Description

At the same time, I don&apos;t want to give up on having it be an aggregate type, because (1) aggregate types should get copy elision when initialized from prvalues &hyphen;&hyphen; but a perfect&hyphen;forwarding constructor would break that, and (2) not being an aggregate type *might* break register&hyphen;pass optimizations&period;

So, instead I replace `&hyphen;Wmissing&hyphen;braces` by `&hyphen;Wmissing&hyphen;field&hyphen;initializers`, which has its correctness benefits without any of the bad side effects&period;

FIXME&colon; Remove when our warnings are fixed to be this way globally&period;


[.small]#Created with https://www.mrdocs.com[MrDocs]#
