| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
otherwise cause a ratio compile-time overflow. This fixes LWG 2094.
llvm-svn: 189722
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 189634
|
|
|
|
| |
llvm-svn: 189602
|
|
|
|
|
|
| |
libc++ code.
llvm-svn: 189601
|
|
|
|
|
|
| |
changes to libc++
llvm-svn: 189586
|
|
|
|
| |
llvm-svn: 189401
|
|
|
|
| |
llvm-svn: 189399
|
|
|
|
|
|
| |
(some of) the constructors for wstring_convert and wbuffer_convert as explicit. Add configuration macro _LIBCPP_EXPLICIT_AFTER_CXX11
llvm-svn: 189398
|
|
|
|
| |
llvm-svn: 189359
|
|
|
|
| |
llvm-svn: 189352
|
|
|
|
| |
llvm-svn: 189345
|
|
|
|
|
|
| |
libc++ already fixed them.
llvm-svn: 189232
|
|
|
|
| |
llvm-svn: 189140
|
|
|
|
| |
llvm-svn: 189044
|
|
|
|
|
|
| |
Leave the (existing, out-of-line, non-constexpr) in the dylib for compatibility with existing programs)
llvm-svn: 188858
|
|
|
|
| |
llvm-svn: 188813
|
|
|
|
| |
llvm-svn: 188811
|
|
|
|
| |
llvm-svn: 188810
|
|
|
|
|
|
| |
implemented, so no functionality change was needed.
llvm-svn: 188803
|
|
|
|
|
|
| |
for the papers.
llvm-svn: 188387
|
|
|
|
| |
llvm-svn: 188383
|
|
|
|
| |
llvm-svn: 188381
|
|
|
|
| |
llvm-svn: 188378
|
|
|
|
| |
llvm-svn: 188375
|
|
|
|
| |
llvm-svn: 188333
|
|
|
|
| |
llvm-svn: 188321
|
|
|
|
| |
llvm-svn: 188294
|
|
|
|
| |
llvm-svn: 188286
|
|
|
|
| |
llvm-svn: 188284
|
|
|
|
| |
llvm-svn: 188283
|
|
|
|
| |
llvm-svn: 188277
|
|
|
|
| |
llvm-svn: 188276
|
|
|
|
| |
llvm-svn: 188275
|
|
|
|
| |
llvm-svn: 188273
|
|
|
|
|
|
| |
unordered_multimap. This wraps up debug mode for the unordered containers.
llvm-svn: 187659
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
weak, but I believe all of the functionality is there. Certainly enough for people to checkout and start beating up on.
llvm-svn: 179632
|
|
|
|
|
|
| |
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.
llvm-svn: 178288
|
|
|
|
| |
llvm-svn: 177099
|
|
|
|
| |
llvm-svn: 177093
|
|
|
|
|
|
| |
built with libcxxrt on Linux.
llvm-svn: 176093
|
|
|
|
| |
llvm-svn: 175274
|
|
|
|
| |
llvm-svn: 174733
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 171316
|
|
|
|
| |
llvm-svn: 168715
|
|
|
|
| |
llvm-svn: 168713
|
|
|
|
| |
llvm-svn: 167930
|
|
|
|
| |
llvm-svn: 167490
|