This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA (libstdc++): C++ PATCH to implement C++17 noexcept in type system


This patch implements P0012R1: "Make exception-specifications be part
of the type system, version 5".  Some of the conversion logic was
already there from the transactional memory TS implementation, and
indeed the semantics of the noexcept function pointer conversion was
modeled on that wording, but I've simplified it in some places and
added some missing cases.

One thing that turned up was that we can't defer instantiation of
noexcept-specifiers outside of the toplevel type of a function, so I
needed to add a tsubst flag to indicate that context.

This patch implements Richard Smith's suggestion that we allow
noexcept(E) to be a deduced context in order to avoid another factor
of two expansion in the partial specializations of is_function.  This
is not part of the C++17 CD, but seems like the direction of the
committee.  Accordingly, I've added macros for this to c++config and
adjusted <type_traits> and <new> to use them.

Tested x86_64-pc-linux-gnu.  Are the libstdc++ changes OK for trunk?

Attachment: noexcept-type.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]