summaryrefslogtreecommitdiffstats
path: root/libcxx/include/experimental
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement modified LWG 2665Eric Fiselier2016-10-151-2/+11
| | | | llvm-svn: 284313
* Implement LWG2664 and update its statusEric Fiselier2016-10-151-0/+2
| | | | llvm-svn: 284310
* Move _LIBCPP_INLINE_VISIBILITY to first declaration in <propagate_const>Eric Fiselier2016-09-161-4/+8
| | | | llvm-svn: 281692
* Move inline attributes in filesystem to first declarationEric Fiselier2016-09-161-3/+7
| | | | llvm-svn: 281683
* [libc++] Fix and document visibility attributes for Clang, GCC and Windows.Eric Fiselier2016-09-151-4/+4
| | | | | | | | | | | | | | | | | | | | | Summary: This patch fixes a number of problems with the visibility macros across GCC (on Unix) and Windows (DLL import/export semantics). All of the visibility macros are now documented under `DesignDocs/VisibilityMacros.rst`. Now I'll no longer forget the subtleties of each! This patch adds two new visibility macros: * `_LIBCPP_ENUM_VIS` for controlling the typeinfo of enum types. Only Clang supports this. * `_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS` for redefining visibility on explicit instantiation declarations. Clang and Windows require this. After applying this patch GCC only emits one -Wattribute warning opposed to 30+. Reviewers: mclow.lists, EricWF Subscribers: beanz, mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D24602 llvm-svn: 281673
* Fix PR30260 - optional<const T> not working.Eric Fiselier2016-09-071-14/+19
| | | | | | | | | | This patch fixes PR30260 by using a (void*) cast on the placement argument to placement new to casts away the const. See also http://llvm.org/PR30260. As a drive by change this patch also changes the header guard for <experimental/optional> to _LIBCPP_EXPERIMENTAL_OPTIONAL from _LIBCPP_OPTIONAL. llvm-svn: 280775
* Implement C++17 std::sample.Eric Fiselier2016-08-281-58/+5
| | | | | | | | This patch implements the std::sample function added to C++17 from LFTS. It also removes the std::experimental::sample implementation which now forwards to std::sample. llvm-svn: 279948
* Mark LWG 2716 as complete - shuffle and sample disallows lvalue URNGs.Eric Fiselier2016-08-281-0/+3
| | | | | | | | | | | Libc++'s implementation of shuffle and sample already support lvalue and rvalue RNG's. This patch adds tests for both categories and marks the issue as complete. This patch also contains drive-by change for std::experimental::sample which improves the diagnostics produced when the correct iterator categories are not supplied. llvm-svn: 279947
* Implement LWG 2711. Constrain path members.Eric Fiselier2016-08-281-0/+3
| | | | llvm-svn: 279945
* Followon to r279744. Find the other exception types and make __throw_XXX ↵Marshall Clow2016-08-253-6/+17
| | | | | | routines (and call them). Remove the generic __libcpp_throw routine, since no one uses it anymore. llvm-svn: 279763
* Remove duplicate inlineMarshall Clow2016-08-251-1/+1
| | | | llvm-svn: 279746
* Add an _LIBCPP_NORETURN inline function named __throw_XXX for each exception ↵Marshall Clow2016-08-254-40/+22
| | | | | | 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. llvm-svn: 279744
* Implement LCM and GCD for Library Fundamentals. Reviewed as ↵Marshall Clow2016-07-261-0/+103
| | | | | | https://reviews.llvm.org/D21343. llvm-svn: 276750
* Implement P0392r0. Integrate filesystem::path and string_view.Eric Fiselier2016-07-231-21/+43
| | | | llvm-svn: 276511
* Implement p0337r0. Delete operator= for polymorphic_allocator.Eric Fiselier2016-06-271-1/+1
| | | | llvm-svn: 273838
* [libcxx] guard throw with exception enabling checkWeiming Zhao2016-06-241-0/+8
| | | | | | | | | | | | Summary: this fixes build error when built with c++14 and no exceptions Reviewers: rmaprath Subscribers: weimingz, grandinj, rmaprath, cfe-commits Differential Revision: http://reviews.llvm.org/D21673 llvm-svn: 273697
* Implement LWG issue 2720. Replace perms::resolve_symlinks with ↵Eric Fiselier2016-06-211-1/+1
| | | | | | | | | | | | | | | perms::symlink_nofollow. This changes how filesystem::permissions(p, perms) handles symlinks. Previously symlinks were not resolved by default instead only getting resolved when "perms::resolve_symlinks" was used. After this change symlinks are resolved by default and perms::symlink_nofollow must be given to change this. This issue has not yet been moved to Ready status, and I will revert if it doesn't get moved at the current meeting. However I feel confident that it will and it's nice to have implementations when moving issues. llvm-svn: 273328
* Implement LWG issue 2725. The issue should move this meetingEric Fiselier2016-06-211-1/+3
| | | | llvm-svn: 273325
* Implement std::experimental::propagate_const from LFTS v2Jonathan Coe2016-06-192-0/+580
| | | | | | | | | | | | | Summary: An implementation of std::experimental::propagate_const from Library Fundamentals Technical Specification v2. No tests are provided for disallowed types like fancy pointers or function pointers as no code was written to handle these. Reviewers: EricWF, mclow.lists Differential Revision: http://reviews.llvm.org/D12486 llvm-svn: 273122
* Add Filesystem TS -- CompleteEric Fiselier2016-06-172-0/+2060
| | | | | | | | | | | | | | Add the completed std::experimental::filesystem implementation and tests. The implementation supports C++11 or newer. The TS is built as part of 'libc++experimental.a'. Users of the TS need to manually link this library. Building and testing the TS can be disabled using the CMake option '-DLIBCXX_ENABLE_FILESYSTEM=OFF'. Currently 'libc++experimental.a' is not installed by default. To turn on the installation of the library use '-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON'. llvm-svn: 273034
* Make string_view work with -fno-exceptions and get tests passing.Eric Fiselier2016-05-301-3/+4
| | | | llvm-svn: 271237
* Add experimental container alias templates for PMRsEric Fiselier2016-05-0710-0/+550
| | | | llvm-svn: 268841
* Add <experimental/memory_resource>Eric Fiselier2016-05-073-0/+516
| | | | | | | | | | Reviewers: mclow.lists, EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D20007 llvm-svn: 268829
* Fixed some spelling errors in assert messages. No functional change. Thanks ↵Marshall Clow2016-05-041-19/+19
| | | | | | to giffunip@yahoo.com for the report. llvm-svn: 268510
* Cleanup: move visibility/linkage attributes to the first declaration.Evgeniy Stepanov2016-04-222-10/+17
| | | | | | http://reviews.llvm.org/D15404 llvm-svn: 267093
* Add 'is_callable' and 'is_nothrow_callable' traits and cleanup INVOKE.Eric Fiselier2016-04-201-1/+2
| | | | | | | | | | | | The primary purpose of this patch is to add the 'is_callable' traits. Since 'is_nothrow_callable' required making 'INVOKE' conditionally noexcept I also took this oppertunity to implement a constexpr version of INVOKE. This fixes 'std::experimental::apply' which required constexpr 'INVOKE support'. This patch will be followed up with some cleanup. Primarly removing most of "__member_function_traits" since it's no longer used by INVOKE (in C++11 at least). llvm-svn: 266836
* Implement P0253R1: Fixing a design mistake in the searchers interface.Marshall Clow2016-03-082-18/+23
| | | | llvm-svn: 262928
* Left a file out of r259014Marshall Clow2016-01-281-0/+114
| | | | llvm-svn: 259015
* Fix initialzation order in dynarrayEric Fiselier2015-10-011-1/+1
| | | | llvm-svn: 248988
* Implementation of Boyer-Moore and Boyer-Moore-Horspool searchers for the LFTS.Marshall Clow2015-09-081-3/+324
| | | | llvm-svn: 247036
* Remove commented out TODOs. They defined unneeded methods.Eric Fiselier2015-08-191-3/+0
| | | | llvm-svn: 245411
* Make regex and any assert when they should throw an exception _but_ the user ↵Marshall Clow2015-08-171-1/+2
| | | | | | has decreed 'no exceptions'. This matches the behavior of string and vector llvm-svn: 245239
* Mark any as done and comment out extra methods until speaking to MarshallEric Fiselier2015-07-311-2/+3
| | | | llvm-svn: 243729
* [libcxx] Add <experimental/any> v2.Eric Fiselier2015-07-311-0/+591
| | | | | | | | | | | | | | | | Summary: This patch adds the second revision of <experimental/any>. I've been working from the LFTS draft found at this link. https://rawgit.com/cplusplus/fundamentals-ts/v1/fundamentals-ts.html#any Reviewers: danalbert, jroelofs, K-ballo, mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6762 llvm-svn: 243728
* Implement the default searcher for std::experimental::search.Marshall Clow2015-07-201-0/+133
| | | | llvm-svn: 242682
* Implement the plugin-based version of std::search. There are no searchers ↵Marshall Clow2015-07-201-0/+6
| | | | | | yet; those are coming soon. llvm-svn: 242679
* Implement std::experimental::sample.Evgeniy Stepanov2015-05-131-0/+114
| | | | | | | Following specification in "C++ Extensions for Library Fundamentals": http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4480.html#alg.random.sample llvm-svn: 237264
* Fixed an 'extra tokens at end of #endif directive' warning in experimental/ratioMarshall Clow2015-04-231-1/+1
| | | | llvm-svn: 235607
* Remove constexpr support for std::apply because it introduces regressions.Eric Fiselier2015-04-191-1/+1
| | | | llvm-svn: 235274
* [libcxx] Add <experimental/tuple> header for LFTS.Eric Fiselier2015-03-171-0/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds the `<experimental/tuple>` header (almost) as specified in the latest draft of the library fundamentals TS. The main changes in this patch are: 1. Added variable template `tuple_size_v` 2. Added function `apply(Func &&, Tuple &&)`. 3. Changed `__invoke` to be `_LIBCPP_CONSTEXPR_AFTER_CXX11`. The `apply(...)` implementation uses `__invoke` to invoke the given function. `__invoke` already provides the required functionality. Using `__invoke` also allows `apply` to be used on pointers to member function/objects as an extension. In order to facilitate this `__invoke` has to be marked `constexpr`. Test Plan: Each new feature was tested. The test cases for `tuple_size_v` are as follows: 1. tuple_size_v.pass.cpp - Check `tuple_size_v` on cv qualified tuples, pairs and arrays. 2. tuple_size_v.fail.cpp - Test on reference type. 3. tuple_size_v_2.fail.cpp - Test on non-tuple 4. tuple_size_v_3.fail.cpp - Test on pointer type. The test cases for tuple.apply are as follows: 1. arg_type.pass.cpp - Ensure that ref/pointer/cv qualified types are properly passed. 2. constexpr_types.pass.cpp - Ensure constexpr evaluation of apply is possible for `tuple` and `pair`. 3. extended_types.pass.cpp - Test apply on function types permitted by extension. 4. large_arity.pass.cpp - Test that apply can evaluated on tuples and arrays with large sizes. 5. ref_qualifiers.pass.cpp - Test that apply respects ref qualified functions. 6. return_type.pass.cpp - Test that apply returns the proper type. 7. types.pass.cpp - Test apply on function types as required by LFTS. Reviewers: mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4512 llvm-svn: 232515
* Define a new macro: _LIBCPP_HAS_NO_VARIABLE_TEMPLATES and use it. No ↵Marshall Clow2015-03-174-8/+8
| | | | | | functionality change. llvm-svn: 232493
* Change string_view::at to make it work with gcc and VC++. Thanks to K-ballo ↵Marshall Clow2015-02-231-4/+1
| | | | | | for the bug report, and Jonathan Wakeley for the code review in the bar. llvm-svn: 230260
* Enable testing with _LIBCPP_DEBUG and fix bad assertions in string_view.Eric Fiselier2015-02-181-2/+2
| | | | llvm-svn: 229698
* [libcxx] Add <experimental/ratio>Eric Fiselier2015-02-171-0/+77
| | | | | | | | | | | | | | | | | Summary: This patch is pretty simple. It just adds the _v traits from <ratio>. The draft can be found here. Reviewers: jroelofs, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7351 llvm-svn: 229509
* Handle function name conflicts in _LIBCPP_MSVCRT modeSaleem Abdulrasool2015-02-131-0/+2
| | | | | | | | | | Visual Studio's SAL extension uses a macro named __deallocate. This macro is used pervasively, and gets included through various different ways. This conflicts with the similarly named interfaces in libc++. Introduce a undef header similar to __undef_min_max to handle this. This fixes a number of errors due to the macro replacing the function name. llvm-svn: 229162
* Move the test for zero-length into the char_traits (from string_view). Add ↵Marshall Clow2015-02-121-1/+1
| | | | | | tests to char_traits specializations llvm-svn: 228981
* Fixed a problem that UBSAN found, where we were calling memcmp(null, p, 0) - ↵Marshall Clow2015-02-121-1/+1
| | | | | | which is undefined behavior llvm-svn: 228952
* Add pragma system header to some experimental headers and add newlines to files.Eric Fiselier2015-02-105-2/+21
| | | | llvm-svn: 228712
* Fix more issues exposed by -pedantic-errors in c++03 modeEric Fiselier2015-02-102-2/+2
| | | | llvm-svn: 228711
* [libcxx] Add <experimental/system_error>Eric Fiselier2015-02-031-0/+59
| | | | | | | | | | | | | | | | | | Summary: This patch just adds the variable templates in <experimental/system_error>. see: https://rawgit.com/cplusplus/fundamentals-ts/v1/fundamentals-ts.html#syserror Reviewers: jroelofs, danalbert, K-ballo, mclow.lists Reviewed By: mclow.lists Subscribers: chandlerc, cfe-commits Differential Revision: http://reviews.llvm.org/D7353 llvm-svn: 227973
OpenPOWER on IntegriCloud