llvm-project/libcxx/include/experimental
Eric Fiselier a55333003d Optimize filesystem::path by providing weaker exception guarantees.
path uses string::append to construct, append, and concatenate paths. Unfortunatly
string::append has a strong exception safety guaranteed and if it can't prove
that the iterator operations don't throw then it will allocate a temporary
string copy to append to. However this extra allocation and copy is very
undesirable for path which doesn't have the same exception guarantees.

To work around this this patch adds string::__append_forward_unsafe which exposes
the std::string::append interface for forward iterators without enforcing
that the iterator is noexcept.

llvm-svn: 285532
2016-10-31 02:46:25 +00:00
..
__config Implement std::experimental::propagate_const from LFTS v2 2016-06-19 19:34:13 +00:00
__memory Add <experimental/memory_resource> 2016-05-07 01:04:55 +00:00
algorithm Implement C++17 std::sample. 2016-08-28 22:14:37 +00:00
any Remove duplicate inline 2016-08-25 15:56:55 +00:00
chrono
deque Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
dynarray Add an _LIBCPP_NORETURN inline function named __throw_XXX for each exception type we define. They either construct and throw the exception, or abort() (if exceptions are disabled). Use these functions everywhere instead of assert()ing when exceptions are disabled. WARNING: This is a behavior change - but only with exceptions disabled. Reviewed as: https://reviews.llvm.org/D23855. 2016-08-25 15:09:01 +00:00
filesystem Optimize filesystem::path by providing weaker exception guarantees. 2016-10-31 02:46:25 +00:00
forward_list Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
functional Implement P0253R1: Fixing a design mistake in the searchers interface. 2016-03-08 15:12:52 +00:00
iterator Left a file out of r259014 2016-01-28 04:15:35 +00:00
list Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
map Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
memory_resource Followon to r279744. Find the other exception types and make __throw_XXX routines (and call them). Remove the generic __libcpp_throw routine, since no one uses it anymore. 2016-08-25 17:47:09 +00:00
numeric Implement LCM and GCD for Library Fundamentals. Reviewed as https://reviews.llvm.org/D21343. 2016-07-26 14:28:34 +00:00
optional Fix use of non-constexpr C++14 addressof 2016-10-16 03:49:18 +00:00
propagate_const Move _LIBCPP_INLINE_VISIBILITY to first declaration in <propagate_const> 2016-09-16 02:16:23 +00:00
ratio Fixed an 'extra tokens at end of #endif directive' warning in experimental/ratio 2015-04-23 16:45:08 +00:00
regex Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
set Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
string Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
string_view Followon to r279744. Find the other exception types and make __throw_XXX routines (and call them). Remove the generic __libcpp_throw routine, since no one uses it anymore. 2016-08-25 17:47:09 +00:00
system_error
tuple Add 'is_callable' and 'is_nothrow_callable' traits and cleanup INVOKE. 2016-04-20 00:14:32 +00:00
type_traits
unordered_map Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
unordered_set Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00
utility
vector Add experimental container alias templates for PMRs 2016-05-07 03:09:55 +00:00