<div dir="ltr"><div>In the following I mean by "language extension" anything that is not in the C++11/14 draft nor accepted in the C++1z draft.</div><div><br></div><div>Since I use libc++ I've seen a tendency to enable/experiment with language extensions silently by default. This has always resulted into trouble for me: </div><div><br></div><div>Three cases come to mind:</div><div><br></div><div>- "return {...}; into a std::tuple"</div><div>- constexpr invoke</div><div>- std::bitset::const_reference</div><div><br></div><div>These extensions make sense, users might expect them, and as a consequence it is easy to use these extensions without knowing that one is writing non-portable code. </div><div><br></div><div>I like that people experiment and add extensions to libc++ and wish it would be done more often as long as the extensions are always opt-in (e.g. put behind a macro). </div><div><br></div><div>Does libc++ has a policy with respect to extensions?<br></div><div><br></div><div>If so, what is this policy?</div><div><br></div><div>Otherwise, should it have one?</div>
</div>