Howard Hinnant
ff29d538ea
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.
...
llvm-svn: 191142
2013-09-21 19:25:37 +00:00
Howard Hinnant
f13cf89df2
Apply LWG 2021. This is only a documentation change. Also bringing c++1y status page up to date.
...
llvm-svn: 191141
2013-09-21 18:17:23 +00:00
Marshall Clow
9a08837ba3
Fix link to dynarray issue
...
llvm-svn: 190707
2013-09-13 17:32:32 +00:00
Marshall Clow
63d233b6ce
Update status for <dynarray>
...
llvm-svn: 190700
2013-09-13 15:37:11 +00:00
Marshall Clow
ef44edfde4
N3545: Quoted strings
...
llvm-svn: 190032
2013-09-05 04:48:45 +00:00
Marshall Clow
edc4ee3d15
Mark issues 2103, 2005, 2196 and 2203 as complete. No code changes.
...
llvm-svn: 190012
2013-09-04 23:48:25 +00:00
Marshall Clow
8bd0ac1135
Updated status for LSG issues 2122, 2169, 2177, 2140 and 2086.
...
llvm-svn: 189900
2013-09-04 01:06:59 +00:00
Marshall Clow
3e2319e47a
Update status of issues 2045, 2050, 2080, 2081, 2083, 2130, 2137 and 2177.
...
llvm-svn: 189894
2013-09-04 00:18:19 +00:00
Marshall Clow
5155a569d1
LWG Issue 2148: Hashing Enums
...
llvm-svn: 189831
2013-09-03 17:55:32 +00:00
Marshall Clow
3e6a3d0c29
Fix a typo in the status for <optional>
...
llvm-svn: 189809
2013-09-03 14:16:49 +00:00
Howard Hinnant
e7d746d8b9
Implement N3672, optional<T>.
...
llvm-svn: 189772
2013-09-02 20:30:37 +00:00
Howard Hinnant
69bc206547
SFINAE out duration converting constructor if the constructor would otherwise cause a ratio compile-time overflow. This fixes LWG 2094.
...
llvm-svn: 189722
2013-08-31 16:51:56 +00:00
Howard Hinnant
525dc284b4
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.
...
llvm-svn: 189687
2013-08-30 19:12:42 +00:00
Marshall Clow
1e548c72e7
LWG Issue 2128: Implement global cbegin/rbegin/cend/rbegin
...
llvm-svn: 189634
2013-08-30 01:17:07 +00:00
Marshall Clow
eabb87c438
Typo: I wrote "2058" into the status column for issue 2058 instead of "Complete"
...
llvm-svn: 189602
2013-08-29 19:03:01 +00:00
Marshall Clow
08bdca2fc2
Mark LWG issues 2109, 222, 2058, 2091 and 2092 as complete. No changes to libc++ code.
...
llvm-svn: 189601
2013-08-29 18:55:55 +00:00
Marshall Clow
24cca08054
Mark issues 2147, 2149, 2163, 2172, 2098 and 2177 as complete. No code changes to libc++
...
llvm-svn: 189586
2013-08-29 15:35:54 +00:00
Marshall Clow
90a4dad9da
Marked #2163 as complete in previous commit instead of #2162 . Corrected.
...
llvm-svn: 189401
2013-08-27 20:25:06 +00:00
Marshall Clow
06fbed03fc
LWG Issue 2162: mark allocator_traits::maxsize as noexcept
...
llvm-svn: 189399
2013-08-27 20:22:15 +00:00
Marshall Clow
7988106b21
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
...
llvm-svn: 189398
2013-08-27 20:18:59 +00:00
Marshall Clow
bf9ad4a1f8
Mark LWG issues 2190, 2200, and 2211 as done. No changes needed to libc++.
...
llvm-svn: 189359
2013-08-27 15:47:05 +00:00
Marshall Clow
5320c2b563
Update synopsis in <locale> to match LWG Issue 2229. No code change
...
llvm-svn: 189352
2013-08-27 14:22:13 +00:00
Marshall Clow
54c83368a5
Implement LWG issue 2061
...
llvm-svn: 189345
2013-08-27 13:03:03 +00:00
Marshall Clow
541be9c72c
Mark LWG issues 2011, 2015, 2033, 2065, 2071, 2102, 2235 as complete b/c libc++ already fixed them.
...
llvm-svn: 189232
2013-08-26 17:31:31 +00:00
Howard Hinnant
145afa17ca
Rename _LIBCPP_DEBUG2 to _LIBCPP_DEBUG.
...
llvm-svn: 189140
2013-08-23 20:10:18 +00:00
Marshall Clow
7b5566c5f5
Mark LWG issues #2083 , 2099 and 2105 as complete. No functionality change.
...
llvm-svn: 189044
2013-08-22 18:53:17 +00:00
Marshall Clow
a86d516213
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)
...
llvm-svn: 188858
2013-08-21 02:57:19 +00:00
Marshall Clow
890d1ee469
Updated status of issues #2093 , 2144, and 2185
...
llvm-svn: 188813
2013-08-20 16:59:06 +00:00
Marshall Clow
8a79e1d053
Updated status and description of issues 2064, 2069 and 2096.
...
llvm-svn: 188811
2013-08-20 16:24:55 +00:00
Marshall Clow
a0393ce271
Updated status of issues #2028 , 2047, and 2053.
...
llvm-svn: 188810
2013-08-20 16:18:29 +00:00
Marshall Clow
e06e3ac7d5
Updated status of issues #1214 , 2207 and 2209. They were already implemented, so no functionality change was needed.
...
llvm-svn: 188803
2013-08-20 14:21:16 +00:00
Howard Hinnant
009aff5e96
Added some missing issues to the c++1y status page, and put in hyperlinks for the papers.
...
llvm-svn: 188387
2013-08-14 17:26:18 +00:00
Marshall Clow
a6821921a7
remove CWG papers from list; add link to clang status page
...
llvm-svn: 188383
2013-08-14 16:30:37 +00:00
Marshall Clow
03bcdf27c6
Added CWG and SG1 papers to libc++ status page
...
llvm-svn: 188381
2013-08-14 16:12:34 +00:00
Marshall Clow
444d3300f2
Mark LWG Issue #2110 and #2113 as completed - they were already done
...
llvm-svn: 188378
2013-08-14 15:28:40 +00:00
Marshall Clow
ede1aa2d31
Add a deleted assignment operator for basic_ostream; LWG Issue #2067
...
llvm-svn: 188375
2013-08-14 15:15:28 +00:00
Marshall Clow
2d6e2834a8
Implement LWG Issue #2187 (emplace_back and emplace for vector<bool>)
...
llvm-svn: 188333
2013-08-13 23:54:12 +00:00
Marshall Clow
e06dfe2ccd
Update for N3657 and issue 2010
...
llvm-svn: 188321
2013-08-13 22:20:01 +00:00
Marshall Clow
72f7821cc6
Updated issues 2039, 2044, 2197, 2225, and 2231
...
llvm-svn: 188294
2013-08-13 17:02:42 +00:00
Marshall Clow
bd9d059e6c
Updated Issue 2187
...
llvm-svn: 188286
2013-08-13 16:23:22 +00:00
Marshall Clow
e714b879df
Removed 'Ready' issues from Bristol
...
llvm-svn: 188284
2013-08-13 16:07:51 +00:00
Marshall Clow
fb9945594f
Updated issues 2009 and 2074
...
llvm-svn: 188283
2013-08-13 16:01:28 +00:00
Marshall Clow
47e432c6df
Fix template formatting. No, really
...
llvm-svn: 188277
2013-08-13 15:13:42 +00:00
Marshall Clow
6efb2bf585
escape some template specs
...
llvm-svn: 188276
2013-08-13 15:07:02 +00:00
Marshall Clow
873e890f44
Fix case mismatch
...
llvm-svn: 188275
2013-08-13 14:59:44 +00:00
Marshall Clow
f77718ad1d
Create a C++14 status page
...
llvm-svn: 188273
2013-08-13 14:58:39 +00:00
Howard Hinnant
2f51de568f
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.
...
llvm-svn: 187659
2013-08-02 17:50:49 +00:00
Howard Hinnant
42a3046eef
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.
llvm-svn: 187636
2013-08-02 00:26:35 +00:00
Howard Hinnant
e5c13decbe
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.
llvm-svn: 187369
2013-07-29 19:05:47 +00:00
Howard Hinnant
9a20da75ef
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.
...
llvm-svn: 179632
2013-04-16 21:42:36 +00:00