On Aug 12, 2015, at 7:12 AM, Gonzalo BG <gonzalobg88@gmail.com> wrote:

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.

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: 

Three cases come to mind:

- "return {...}; into a std::tuple"
- constexpr invoke
- std::bitset::const_reference

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. 

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). 

Does libc++ has a policy with respect to extensions?

If so, what is this policy?

IMO, libc++ should follow the clang policy on extensions:
http://clang.llvm.org/get_involved.html

-Chris