| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
and also for basic_string. Also made hash<thread::id> ever so slighly more portable. I had to tweak one test which is questionable (definitely not portable) anyway.
llvm-svn: 145795
|
|
|
|
|
|
| |
work, extends it to T*, and changes the way double and long double are handled (no longer convert to float on 32 bit). I also picked up a minor bug with uninitialized bits on the upper end of size_t when sizeof(size_t) > sizeof(T), e.g. in hash<float>. Most of the functionality has been put in one place: __scalar_hash in <memory>. Unfortunately I could not reuse __scalar_hash for hash<long double> on x86 because of the padding bits which need to be zeroed. I didn't want to add this zeroing step to the more general __scalar_hash when it isn't needed (in the absence of padding bits). I'm not ignoring the hash<string> issue (possibly changing that to a better hash). I just haven't gotten there yet.
llvm-svn: 145778
|
|
|
|
| |
llvm-svn: 145624
|
|
|
|
| |
llvm-svn: 145410
|
|
|
|
| |
llvm-svn: 145407
|
|
|
|
| |
llvm-svn: 142235
|
|
|
|
| |
llvm-svn: 140907
|
|
|
|
| |
llvm-svn: 136526
|
|
|
|
| |
llvm-svn: 135393
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=10191
llvm-svn: 134248
|
|
|
|
| |
llvm-svn: 134190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Objective-C Automatic Reference Counting, where Objective-C object
pointers can have several different qualifiers (__strong, __weak,
__autoreleasing, __unsafe_unretained). These addressof() overloads are
only provided in ARC mode, and the __weak variant is conditionalized
on having weak-reference support in the ARC runtime.
For historical reasons, Clang provides these definitions itself, and
defines the macro _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF to note when
it as done so. The code belongs here, and this redundancy will be
eliminated in the future.
Addresses <rdar://problem/9658274>.
llvm-svn: 133656
|
|
|
|
|
|
| |
The purpose is to aid automated documentation tools.
llvm-svn: 133008
|
|
|
|
|
|
| |
std::alloctor to propagate_on_container_move_assignment so as to make deque<T> move assignment noexcept. What we really need is a compile-time switch that says an allocator always compares equal.
llvm-svn: 132490
|
|
|
|
|
|
| |
allocator_traits<A>::deallocate, allocaate<T>::deallocate, return_temporary_buffer, and default_delete<T>::operator()(T*) const. My rationale was: If a std-dicated noexcept function needs to call another std-defined function, that called function must be noexcept. We're all a little new to noexcept, so things like this are to be expected. Also included fix for broken __is_swappable trait pointed out by Marc Glisse, thanks Marc|. And fixed a test case for is_nothrow_destructible. Destructors are now noexcept by default|
llvm-svn: 132261
|
|
|
|
|
|
| |
compile-time diagnostic if they are used with incomplete types for anything except a return type. Note that both arguments *and* parameters are checked for completeness.
llvm-svn: 131818
|
|
|
|
|
|
| |
to turn on support for alias templates.
llvm-svn: 131199
|
|
|
|
| |
llvm-svn: 124726
|
|
|
|
| |
llvm-svn: 123269
|
|
|
|
| |
llvm-svn: 121510
|
|
|
|
|
|
| |
emulation; waiting on compiler intrinsics to do it right.
llvm-svn: 119854
|
|
|
|
| |
llvm-svn: 119699
|
|
|
|
| |
llvm-svn: 119609
|
|
|
|
| |
llvm-svn: 119395
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
increased. The following program is running 49% faster:
#include <iostream>
#include <memory>
#include <chrono>
#include <vector>
#include "chrono_io"
int main()
{
typedef std::chrono::high_resolution_clock Clock;
Clock::time_point t0 = Clock::now();
{
std::shared_ptr<int> p(new int (1));
std::vector<std::shared_ptr<int> > v(1000000, p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
}
Clock::time_point t1 = Clock::now();
std::cout << (t1-t0) << '\n';
}
llvm-svn: 119388
|
|
|
|
| |
llvm-svn: 119383
|
|
|
|
| |
llvm-svn: 114551
|
|
|
|
|
|
| |
struct/classes in libc++. This checkin decorates only basic_string and vector as an experiment, and for review by those in this audience that might know more about visibilty than I do. If I get no negative feedback on this procedure I will begin to decorate the entire library in this way.
llvm-svn: 113590
|
|
|
|
|
|
| |
flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
llvm-svn: 113086
|
|
|
|
| |
llvm-svn: 111750
|
|
|
|
| |
llvm-svn: 111747
|
|
|
|
| |
llvm-svn: 111538
|
|
|
|
| |
llvm-svn: 110828
|
|
|
|
| |
llvm-svn: 110724
|
|
|
|
| |
llvm-svn: 105393
|
|
|
|
|
|
| |
distribution is hopefully just a placeholder. It is using the simplest and slowest method for computing the distribution and needs to be upgraded.
llvm-svn: 103524
|
|
|
|
| |
llvm-svn: 103516
|
|
llvm-svn: 103490
|