Commit Graph

265 Commits

Author SHA1 Message Date
Marshall Clow
ebd6c2b81d Implement LWG #2212: std::is_final. This requires compiler support, which modern versions of clang provide. Also mark LWG #2230 as complete - no code changes needed.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202934 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-05 03:39:25 +00:00
Marshall Clow
23ef151614 Update synposis in <memory> to show move semantics for weak_ptr; add tests for already existing move semantics. Mark LWG issues #2315 (no changes needed), 2316 (move semantics for weak_ptr), 2252 (previous commit) and 2271 (previous commit) as complete.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202931 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-05 03:12:04 +00:00
Marshall Clow
a6057a525a Fix issue number error; 2141 --> 2291 and mark it as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202884 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-04 20:29:09 +00:00
Marshall Clow
5ba85af029 Add a SG1 paper and some SG1 issues that affect the library to the task list.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202881 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-04 19:40:36 +00:00
Marshall Clow
ab9da1a78f Apply David Majnemer's patch updating the links to the papers from Chicago and Issaquah.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202878 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-04 19:22:53 +00:00
Marshall Clow
8f20e52a2b Mark issues #2240 (wording only) and #2268 (revision 202876) as complete.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202877 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-04 19:18:36 +00:00
Marshall Clow
53c0e72d5c Implement LWG 2324: Insert iterator constructors should use addressof(). Add two new container classes to the test suite that overload operator &, and add test cases to the insert/front_insert/back_insert iterator tests that use these containers.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202741 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-03 19:20:40 +00:00
Marshall Clow
50fe0c7d61 Implement LWG Paper n3887: Consistent Metafunction Aliases. This adds std::tuple_element_t<> as an alias for tuple_element<>::type. Clean up the synopsis for tuple_element in <utility> as well.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202673 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-03 06:18:11 +00:00
Marshall Clow
ff137e9145 Implement LWG Issue #2285 - make_reverse_iterator. Also mark issues #1450 and #2205 as complete; they are just wording changes in the standard. Mark issues #2359, #2320 and #2322 as complete - libc++ implements them already.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202671 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-03 01:24:04 +00:00
Marshall Clow
37a9ca6fb2 More LWG issues. Mark #2182, #2323 and #2213 as complete. Add a test for #2339, and mark that as complete. No actual changes to the libc++ code; all of these were already in place.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202407 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 16:13:36 +00:00
Marshall Clow
02ca8af10b LWG issue #2188: Reverse iterator does not fully support targets that overload operator&. Also mark #2272 and #2299 as complete; libc++ already implements them.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202339 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 02:11:50 +00:00
Marshall Clow
103af3478e Implement LWG issue 2306: match_results::reference should be value_type&, not const value_type&. This is a general move by the LWG to have the reference type of read-only containers be a non-const reference; however, there are no methods that return a non-const reference to a match_result entry, so there's no worries about getting a non-const reference to a constant object.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202214 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-26 01:56:31 +00:00
Marshall Clow
d3ac046ba5 Mark LWG issue 2299 as complete. No code changes; libc++ already implements this.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202203 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 23:11:19 +00:00
Marshall Clow
e75439f54b Mark LWG Issue 2257 as complete.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202162 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 16:35:39 +00:00
Marshall Clow
cc4759288b Mark LWG Issues 2278 and 2313 as complete. No code changes needed; libc++ already implemented both of these.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202161 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 16:25:55 +00:00
Marshall Clow
8e554d93da Implement LWG issue 2301: Mark std::tie as constexpr
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202158 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 16:11:46 +00:00
Marshall Clow
e0f8672e7a Implement LWG Issues #2329 and #2332 - disallow iterators into temporary regexes and regexes into temporary strings
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@201717 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 21:21:11 +00:00
Marshall Clow
d81d83f098 Mark issues 2280, 2258, 2304, 2317, 2350 and 2346 as completed.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@201704 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 17:55:46 +00:00
Marshall Clow
b88d7cc71c Mark issue 2293, 2241 and 2308 as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@201460 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-15 05:41:48 +00:00
Marshall Clow
224dec238c First pass at the Issaquah issues list
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@201459 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-15 05:10:39 +00:00
Marshall Clow
ad2a600c2a Fix LWG Issue 2078. Make std::async(policy,...) try multiple policies until one succeeds.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@193960 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-03 15:43:35 +00:00
Marshall Clow
4259337da2 Update status of issues
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@193228 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-23 05:59:18 +00:00
Marshall Clow
0f91166ef8 Updated status of issues and features
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192546 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-12 22:57:58 +00:00
Marshall Clow
dab89a1412 Fix LWG Issue 2141: common_type trait produces reference types
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192142 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-07 23:43:33 +00:00
Marshall Clow
16f13a0b84 Marked issue 2284 as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192085 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-07 03:26:42 +00:00
Peter Collingbourne
d0d308f54b Make it possible to link against libstdc++ as well as libsupc++ with CMake.
Linking against libstdc++, rather than libsupc++, is probably better
for people who need to link against clients of libstdc++.  Because
libsupc++ is provided only as a static library, its globals are not
shared between the static library and the copy linked into libstdc++.
This has been found to cause at least one test failure.

This also removes a number of symbols which were multiply defined
between libstdc++ and libc++, only when linking with libstdc++.

Differential Revision: http://llvm-reviews.chandlerc.com/D1825

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192075 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-06 22:13:19 +00:00
Marshall Clow
de3cac777d LWG Issue 2247
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192058 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-06 07:19:23 +00:00
Marshall Clow
69bf761909 Updated status post-Chicago
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192057 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-06 07:10:55 +00:00
Marshall Clow
4af78bb10b Fixed bad link for n3789; thanks to Chip Davis for the catch
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191598 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-28 01:52:18 +00:00
Marshall Clow
cb55b18fa9 Missed a change that didn't have an issue number 'GB 9'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191575 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-27 22:21:17 +00:00
Marshall Clow
91008752ed Updated table with results from Chicago
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191573 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-27 22:16:32 +00:00
Howard Hinnant
dcc6a0bc44 Apply LWG 2048. It is amazing to me that this actually works, but the existing tests confirm that it does. c++1y status page now showing libc++ is complete for c++1y modulo dynarray issues.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191142 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-21 19:25:37 +00:00
Howard Hinnant
0836f87fb9 Apply LWG 2021. This is only a documentation change. Also bringing c++1y status page up to date.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191141 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-21 18:17:23 +00:00
Marshall Clow
6ecf7f2d54 Fix link to dynarray issue
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@190707 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-13 17:32:32 +00:00
Marshall Clow
94d3f6b518 Update status for <dynarray>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@190700 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-13 15:37:11 +00:00
Marshall Clow
62f34be0ba N3545: Quoted strings
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@190032 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-05 04:48:45 +00:00
Marshall Clow
058655b28a Mark issues 2103, 2005, 2196 and 2203 as complete. No code changes.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@190012 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-04 23:48:25 +00:00
Marshall Clow
656ed3ca8d Updated status for LSG issues 2122, 2169, 2177, 2140 and 2086.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189900 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-04 01:06:59 +00:00
Marshall Clow
2a258956b0 Update status of issues 2045, 2050, 2080, 2081, 2083, 2130, 2137 and 2177.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189894 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-04 00:18:19 +00:00
Marshall Clow
9e613ca1b3 LWG Issue 2148: Hashing Enums
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189831 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-03 17:55:32 +00:00
Marshall Clow
85bbdcdad4 Fix a typo in the status for <optional>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189809 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-03 14:16:49 +00:00
Howard Hinnant
01afa5c6e4 Implement N3672, optional<T>.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189772 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-02 20:30:37 +00:00
Howard Hinnant
713f4db2e5 SFINAE out duration converting constructor if the constructor would otherwise cause a ratio compile-time overflow. This fixes LWG 2094.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189722 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-31 16:51:56 +00:00
Howard Hinnant
d179407288 is_destructible for function types was mistakenly returning true instead of false. This is true in both C++11 and C++1y, but has been clarified by the post C++11 LWG issue 2049.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189687 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-30 19:12:42 +00:00
Marshall Clow
09da3c053c LWG Issue 2128: Implement global cbegin/rbegin/cend/rbegin
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189634 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-30 01:17:07 +00:00
Marshall Clow
24bf4b8597 Typo: I wrote "2058" into the status column for issue 2058 instead of "Complete"
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189602 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-29 19:03:01 +00:00
Marshall Clow
a96d22b85d Mark LWG issues 2109, 222, 2058, 2091 and 2092 as complete. No changes to libc++ code.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189601 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-29 18:55:55 +00:00
Marshall Clow
1c2e46bd56 Mark issues 2147, 2149, 2163, 2172, 2098 and 2177 as complete. No code changes to libc++
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189586 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-29 15:35:54 +00:00
Marshall Clow
a78b369b66 Marked #2163 as complete in previous commit instead of #2162. Corrected.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189401 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 20:25:06 +00:00
Marshall Clow
08b4f3f99b LWG Issue 2162: mark allocator_traits::maxsize as noexcept
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189399 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 20:22:15 +00:00
Marshall Clow
83179a788f LWG issues 2174/5/6 - mark wstring_convert::converted as noexcept, and make (some of) the constructors for wstring_convert and wbuffer_convert as explicit. Add configuration macro _LIBCPP_EXPLICIT_AFTER_CXX11
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189398 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 20:18:59 +00:00
Marshall Clow
5f36c68cb0 Mark LWG issues 2190, 2200, and 2211 as done. No changes needed to libc++.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189359 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 15:47:05 +00:00
Marshall Clow
e42f184a76 Update synopsis in <locale> to match LWG Issue 2229. No code change
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189352 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 14:22:13 +00:00
Marshall Clow
af74651f61 Implement LWG issue 2061
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189345 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-27 13:03:03 +00:00
Marshall Clow
bce2a4752a Mark LWG issues 2011, 2015, 2033, 2065, 2071, 2102, 2235 as complete b/c libc++ already fixed them.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189232 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-26 17:31:31 +00:00
Howard Hinnant
5e57142c59 Rename _LIBCPP_DEBUG2 to _LIBCPP_DEBUG.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189140 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-23 20:10:18 +00:00
Marshall Clow
5b7519eb15 Mark LWG issues #2083, 2099 and 2105 as complete. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@189044 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-22 18:53:17 +00:00
Marshall Clow
5c316a6d04 LWG 2145 - mark constructor for std::error_category as inline and constexpr. Leave the (existing, out-of-line, non-constexpr) in the dylib for compatibility with existing programs)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188858 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-21 02:57:19 +00:00
Marshall Clow
2a34052dac Updated status of issues #2093, 2144, and 2185
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188813 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-20 16:59:06 +00:00
Marshall Clow
802daf6e16 Updated status and description of issues 2064, 2069 and 2096.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188811 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-20 16:24:55 +00:00
Marshall Clow
cd17d90cbb Updated status of issues #2028, 2047, and 2053.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188810 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-20 16:18:29 +00:00
Marshall Clow
78afc05b45 Updated status of issues #1214, 2207 and 2209. They were already implemented, so no functionality change was needed.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188803 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-20 14:21:16 +00:00
Howard Hinnant
811e7130db Added some missing issues to the c++1y status page, and put in hyperlinks for the papers.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188387 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-14 17:26:18 +00:00
Marshall Clow
e75599557a remove CWG papers from list; add link to clang status page
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188383 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-14 16:30:37 +00:00
Marshall Clow
9b86fc17a0 Added CWG and SG1 papers to libc++ status page
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188381 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-14 16:12:34 +00:00
Marshall Clow
68b4025292 Mark LWG Issue #2110 and #2113 as completed - they were already done
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188378 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-14 15:28:40 +00:00
Marshall Clow
2df3700879 Add a deleted assignment operator for basic_ostream; LWG Issue #2067
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188375 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-14 15:15:28 +00:00
Marshall Clow
198a2a59ee Implement LWG Issue #2187 (emplace_back and emplace for vector<bool>)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188333 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 23:54:12 +00:00
Marshall Clow
5da3087628 Update for N3657 and issue 2010
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188321 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 22:20:01 +00:00
Marshall Clow
23d1ccc3dc Updated issues 2039, 2044, 2197, 2225, and 2231
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188294 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 17:02:42 +00:00
Marshall Clow
6ef840818d Updated Issue 2187
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188286 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 16:23:22 +00:00
Marshall Clow
0931015f01 Removed 'Ready' issues from Bristol
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188284 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 16:07:51 +00:00
Marshall Clow
83e40c4a80 Updated issues 2009 and 2074
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188283 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 16:01:28 +00:00
Marshall Clow
6b229e1ad1 Fix template formatting. No, really
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188277 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 15:13:42 +00:00
Marshall Clow
deb471c3c6 escape some template specs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188276 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 15:07:02 +00:00
Marshall Clow
437cdcf813 Fix case mismatch
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188275 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 14:59:44 +00:00
Marshall Clow
5d4807742f Create a C++14 status page
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188273 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 14:58:39 +00:00
Howard Hinnant
824c19963e debug mode for unordered_map. Also picked up a missing check and test in unordered_multimap. This wraps up debug mode for the unordered containers.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@187659 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-02 17:50:49 +00:00
Howard Hinnant
8b00e6c960 Ok, 3 major changes for debug mode in one commit:
1.  I had been detecting and trapping iterator == and \!= among iterators
    in different containers as an error.  But the trapping itself is actually
    an error.
    
    Consider:
    
    #include <iostream>
    #include <vector>
    #include <algorithm>

    template <class C>
    void
    display(const C& c)
    {
        std::cout << "{";
        bool first = true;
        for (const auto& x : c)
        {
            if (\!first)
                std::cout << ", ";
            first = false;
            std::cout << x;
        }
        std::cout << "}\n";
    }

    int
    main()
    {
        typedef std::vector<int> V;
        V v1 = {1, 3, 5};
        V v2 = {2, 4, 6};
        display(v1);
        display(v2);
        V::iterator i = std::find(v1.begin(), v1.end(), 1);
        V::iterator j = std::find(v2.begin(), v2.end(), 2);
        if (*i == *j)
            i = j;    // perfectly legal
        // ...
        if (i \!= j)   // the only way to check
            v2.push_back(*i);
        display(v1);
        display(v2);
    }

    It is legal to assign an iterator from one container to another of the
    same type.  This is required to work.  One might want to test whether or
    not such an assignment had been made.  The way one performs such a check
    is using the iterator's ==, \!= operator.  This is a logical and necessary
    function and does not constitute an error.

2.  I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
    This caused a problem in several of the libc++ tests.
    Fixed.

3.  There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
    std::basic_string is inoperable.  std::basic_string uses __wrap_iterator
    to implement its iterators.  __wrap_iterator has been rigged up in debug
    mode to support vector.  But string hasn't been rigged up yet.  This means
    that one gets false positives when using std::string in debug mode.  I've
    upped std::string's priority in www/debug_mode.html.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@187636 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-02 00:26:35 +00:00
Howard Hinnant
0bb0a7c9ea Debug mode for unordered_multiset. The exercise spotted a few places I had missed on unordered_set, so I picked those up as well.
There are actually two debug modes:

   1.  -D_LIBCPP_DEBUG2 or -D_LIBCPP_DEBUG2=1
       This is a relatively expensive debug mode, but very thorough.  This is normally what you want to debug with, but may turn O(1) operations into O(N) operations.

   2.  -D_LIBCPP_DEBUG2=0
       This is "debug lite."  Only preconditions that can be checked with O(1) expense are checked.  For example range checking on an indexing operation.  But not iterator validity.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@187369 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-29 19:05:47 +00:00
Howard Hinnant
2062f37772 I believe this finishes up debug mode for list. The testing is a little weak, but I believe all of the functionality is there. Certainly enough for people to checkout and start beating up on.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@179632 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-16 21:42:36 +00:00
Howard Hinnant
302fa82a1c I believe debug mode for vector<T> (T != bool) is complete. If anyone sees anything more they would like to see on it, please let me know. Debug mode is activated by compiling with -D_LIBCPP_DEBUG2=1. Eventually _LIBCPP_DEBUG2 will be renamed to just _LIBCPP_DEBUG.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@178288 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-28 20:35:29 +00:00
Marshall Clow
e47bc9bc4f Updated link to Marshall's instructions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@177099 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-14 19:00:34 +00:00
Howard Hinnant
c7cbe502db Some forward-looking and optimistic documentation.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@177093 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-14 18:37:48 +00:00
Howard Hinnant
fae54b9c14 Michael van der Westhuizen: correction to the libcxx build instructions when built with libcxxrt on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@176093 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-26 16:27:55 +00:00
Howard Hinnant
0dee9cd5ad Bruce Mitchener: Minor typo fixes.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@175274 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15 15:37:50 +00:00
Howard Hinnant
af4d161908 Michael van der Westhuizen: Update instructions for building on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@174733 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08 19:10:36 +00:00
Michael J. Spencer
db8a030bd3 [CMake] Fix c++ abi library configuration on Linux.
You can now configure from the command line using:
-DLIBCXX_CXX_ABI=libsupc++
-DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="path;path

Also documents how to build on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@171316 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-31 19:34:21 +00:00
Howard Hinnant
b0895ff8ae Fix type-o.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@168715 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-27 18:52:32 +00:00
Howard Hinnant
641f6c1f65 Remove by-chapter breakdown of what is implemented. The chart is now obsolete.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@168713 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-27 18:35:09 +00:00
Marshall Clow
faa17162e9 Change C++0x references to C++11, Fixes bug #12745
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@167930 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-14 16:31:15 +00:00
Howard Hinnant
22b781bf0c Update instructions for building and using libc++ on Mac OS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@167490 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-06 21:31:37 +00:00
Marshall Clow
08a0b48c09 Fix a typo in the docs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@162335 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-22 00:57:11 +00:00
Howard Hinnant
ef793f2513 Andrew Morrow: Among the various libc++ tests that currently don't pass on Linux are
localization/locale.categories/category.collate/category.ctype/locale.ctype.byname/is_1.pass.cpp
and scan_is.pass.cpp. The tests fail when the character class being
tested is compound, like ctype_base::alnum or ctype_base::graph,
because the existing series of conditionals in do_is an do_scan_is
will abort too early. For instance, if the character class being
tested is alnum, and the character is numeric, do_is will return false
because iswalpha_l will return false, 'result' becomes false, and the
'true' result from the later call to iswdigit_l ends up being ignored
. A similar problem exists in do_scan_is.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@161192 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-02 18:35:07 +00:00
Howard Hinnant
403f91ad2c Andrew Morrow: The attached patch is an attempt to implement
std:🧵:hardware_concurrency for platforms that don't offer
sysctl, but do provide a POSIX sysconf and _SC_NPROCESSORS_ONLN.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@161190 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-02 18:17:49 +00:00
Howard Hinnant
6d39f9f356 Andrew Morrow: This patch fixes
test/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp
to accept '(nil)' as a valid representation for NULL so that the test
passes on Linux. The same thing is already done in some other tests,
like in /test/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@161188 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-02 18:12:06 +00:00
Howard Hinnant
ee7a0bf265 Andrew Morrow: Attached is a writeup of the current state of the libc++ test suite on Linux.
There are a few tests that are listed as failing here for which I have
a patch in the works. I'll be sending those along soon. There are
others where I know what is going on but don't yet have a solution,
and I've included some notes for those. Several still need to be
investigated, mostly in localization and the regex test suite. I think
that many of these failures are due to locale implementation
variations that make the expected test results not match the actual
results. I'm not sure what the best way to make the tests accomodate
this sort of variation might be.

The failures in the unique_ptr test suite are very new and are caused
by a clang crash which I've not yet looked into.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@161079 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-31 21:30:28 +00:00
Howard Hinnant
7a7b6d8283 Updated status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@160959 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-30 13:59:36 +00:00
Howard Hinnant
30055c68d4 Updated the complete by-chapter graph
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@160943 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-30 02:29:34 +00:00
Howard Hinnant
7d87f6be1b Jean-Daniel : clang now supports all required type_traits.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@160510 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-19 15:59:52 +00:00
Howard Hinnant
af3473404e Jean-Daniel updates the libc++ index page to reflect not so recent changes in C++ standard status.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@160509 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-19 15:57:51 +00:00
Howard Hinnant
a0b5befbd3 New Windows libc++ test results provided by Ruben Van Boxem.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@159852 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-06 19:35:31 +00:00
Howard Hinnant
820e00755a link to Marshall's notes.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@159791 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-06 00:39:38 +00:00
Howard Hinnant
51065657aa Add documentation regarding -fno-rtti.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@157157 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-20 13:03:53 +00:00
Howard Hinnant
271a1c03c3 Updated documentation contributed by Christopher Jefferson.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@153955 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-03 15:08:42 +00:00
Howard Hinnant
704f09b212 Clarify building instructions for 10.7
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@144910 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-17 17:14:16 +00:00
Howard Hinnant
08e17472e4 Windows support by Ruben Van Boxem.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@142235 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 20:05:10 +00:00
Howard Hinnant
907732644c Update instructions for building on Mac OS 10.6
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@141507 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-09 15:25:34 +00:00
Howard Hinnant
8452d21f41 Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@140950 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-01 15:34:27 +00:00
Howard Hinnant
2481cba8b7 Provide link to developer's policy
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@140857 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-30 16:58:02 +00:00
Howard Hinnant
0cbb3a16e2 Ruben's Windows test results.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@140700 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-28 15:44:39 +00:00
Howard Hinnant
8b3fae3cc7 Address PR10909: http://llvm.org/bugs/show_bug.cgi?id=10909
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@139493 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12 14:15:45 +00:00
Sean Hunt
737a351850 Given that __underlying_type is now available in clang, implement
std::underlying_type.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@135410 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-18 18:37:21 +00:00
Howard Hinnant
f5d76a7afc Add instructions for -U__STRICT_ANSI__ for Mac OS 10.6
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@133616 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-22 12:13:55 +00:00
Howard Hinnant
0cfa1f7cbd CWG 1170 has been fixed for destructors
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@131290 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-13 13:39:08 +00:00
Sean Hunt
9e604b442c __is_trivially_copyable now supplied by clang
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@131271 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-13 00:32:09 +00:00
Howard Hinnant
d5c2f255c5 Corrected misspelling
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@131265 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-13 00:03:08 +00:00
Howard Hinnant
7bbce3c0e7 Updated to reflect updated use of existing clang support
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@131264 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-13 00:01:01 +00:00
Howard Hinnant
3666695f0d Updated type_traits and the type_traits design doc with recent work done in clang.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@131090 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-09 19:21:17 +00:00
Howard Hinnant
86e78d694c Jonathan Sauer updated is_base_of traits status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@128349 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-26 19:58:42 +00:00
Howard Hinnant
5a245dbf52 Jean-Daniel Dupas fixes install directions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@126222 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-22 14:18:34 +00:00
Howard Hinnant
65451f1549 Updated getting started directions.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@124452 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 23:18:19 +00:00
Howard Hinnant
01feecb789 type_traits intrinsics design
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@119776 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19 01:48:13 +00:00
Howard Hinnant
9835d76169 type_traits intrinsics design
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@119775 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19 01:38:58 +00:00
Chris Lattner
f38bc6efc5 libc++ is now dual licensed under both UIUC and MIT licenses.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@119391 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16 21:40:19 +00:00
Howard Hinnant
f26262dde0 Updated chart with weekly test results, and updated export files for chnages in <atomic>.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116943 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-20 20:15:14 +00:00
Howard Hinnant
21ef47f436 Changing <atomic> to follow Design A
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116742 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-18 20:39:07 +00:00
Howard Hinnant
be22ed405a Update atomic Design A spec with reference C++ implementations for the purpose of documeting the semantics of each atomic operation.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-18 16:40:13 +00:00
Howard Hinnant
f6fe084fd4 Update atomic Design A spec
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116707 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-18 16:02:24 +00:00
Howard Hinnant
4d89249185 updated for weekly test results
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116425 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-13 20:24:31 +00:00
Howard Hinnant
08f2969220 Updated atomic design docs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116065 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-08 17:36:50 +00:00
Howard Hinnant
77868b9d9a Update atomic design A
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115913 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-07 14:18:37 +00:00
Howard Hinnant
086b718734 Updated <atomic> docs with three design options
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115791 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-06 16:15:10 +00:00
Howard Hinnant
e78d1f548b A compiler writer's guide to <atomic>, minor update
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115633 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05 17:22:28 +00:00
Howard Hinnant
56f0d5be06 A compiler writer's guide to <atomic>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115629 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05 16:44:40 +00:00
Howard Hinnant
5b6af69387 updated per weekly tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115081 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-29 20:15:25 +00:00
Howard Hinnant
049734ed85 Updated chart for weekly test results.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@114029 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-15 21:56:37 +00:00
Howard Hinnant
e764f0b648 Updated by-chapter-summary with weekly test results, and fixed up some bad paths in some tests caused by aligning the test suite with N3126.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@113403 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08 20:31:42 +00:00
Howard Hinnant
f6547cbf61 Updated current status.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@113110 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05 17:31:48 +00:00
Howard Hinnant
ae153b9855 Updated for weekly test results.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@112737 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01 20:33:41 +00:00
Howard Hinnant
98ccdeca3b Updated for weekly test results
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@112078 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-25 19:45:31 +00:00
Howard Hinnant
d2bb032075 Fixing whitespace problems
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@111769 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-22 01:04:38 +00:00
Howard Hinnant
4a23e1e060 Updated by-chapter chart with weekly test results. Also did some prototyping on result_of, but if-def'd out the prototyped part (which the LWG may or may not accept)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@111389 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-18 18:52:04 +00:00
Howard Hinnant
588ea08124 weekly by-chapter summary updated
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@109695 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-28 23:23:51 +00:00
Howard Hinnant
ddff70e879 Updated weekly by chapter summary
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@109135 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22 20:29:53 +00:00
Howard Hinnant
aa69808da9 A good start on extended posix regex. Loops working. Alternation working. Also update by-chapter completeness summary.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@108548 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-16 19:08:36 +00:00
Howard Hinnant
37f9f9c587 weekly update to by-chapter-summary, plus left and right anchor support in basic posix.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@107938 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-09 00:15:26 +00:00
Howard Hinnant
43b4decac5 Updated chart with weekly test results
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@107431 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 21:39:12 +00:00
Howard Hinnant
8c2c18d57c Continuing to work through regex, and updated libcxx_by_chapter.pdf with weekly test results
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@106790 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-24 21:28:00 +00:00
Howard Hinnant
80d88f35d2 updated for weekly tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@106288 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-18 16:13:40 +00:00