Commit Graph

43 Commits

Author SHA1 Message Date
Marshall Clow
25d3402c6a First half of support for N3657; heterogenous lookups for set/multiset
llvm-svn: 188241
2013-08-13 01:11:06 +00:00
Howard Hinnant
f0544c2086 Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>.
llvm-svn: 188192
2013-08-12 18:38:34 +00:00
Marshall Clow
83c08b4497 Implement N3421; comparison predicates<void>
llvm-svn: 187357
2013-07-29 14:21:53 +00:00
Howard Hinnant
9dbbf8dece The bind and function functor constructors and assignment operators were overly general and getting confused with the copy constructor and copy assignment operators. Constrained them. This fixes http://llvm.org/bugs/show_bug.cgi?id=16385
llvm-svn: 185297
2013-07-01 00:01:51 +00:00
Howard Hinnant
9bf42533b7 Fix bind by making _is_valid_bind_return more robust. It should return false instead of give a compile time error, always. The problem was down in ____mu_return, the version that handles nested bind objects. This fixes http://llvm.org/bugs/show_bug.cgi?id=16343
llvm-svn: 185289
2013-06-30 19:48:15 +00:00
Howard Hinnant
6e41256f68 No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute.
llvm-svn: 176593
2013-03-06 23:30:19 +00:00
Howard Hinnant
c0c9748c11 Constrain bind operator()() to not exist if the call is not valid. Fixes http://llvm.org/bugs/show_bug.cgi?id=15295.
llvm-svn: 175774
2013-02-21 18:16:55 +00:00
Howard Hinnant
aba500d633 Revert accidental check-in. These changes are probably good, but premature at this point.
llvm-svn: 174625
2013-02-07 15:31:44 +00:00
Howard Hinnant
804f9116e5 Michael van der Westhuizen: The attached patch add support for building against libc++abi and libcxxrt to CMake builds of libc++.
Usage (with the appropriate CC and CXX environment variables) is:
$ cmake -DLIBCXX_CXX_ABI=libcxxabi '-DLIBCXX_LIBCXXABI_INCLUDE_PATHS=/home/michael/libcxxabi/include' ../libcxx
and:
$ cmake -DLIBCXX_CXX_ABI=libcxxrt '-DLIBCXX_LIBCXXRT_INCLUDE_PATHS=/home/michael/libcxxrt/src' ../libcxx

llvm-svn: 174623
2013-02-07 15:27:39 +00:00
Howard Hinnant
8d3e797444 Donated anonymously: This enables GCC 4.8.0 to build libc++.
llvm-svn: 173060
2013-01-21 17:26:55 +00:00
Argyrios Kyrtzidis
88db3171dd Don't neglect to "return *this".
llvm-svn: 165860
2012-10-13 02:03:45 +00:00
Howard Hinnant
14c56f6c4a Further tweaks on relaxing complete type checking for function.
llvm-svn: 160562
2012-07-20 18:56:07 +00:00
Howard Hinnant
df7aad41fd Constrain __bind functor constructor such that it won't accidentally get used as a copy constructor from a non-const lvalue. Fixes <rdar://problem/11359080>.
llvm-svn: 156182
2012-05-04 17:21:02 +00:00
Howard Hinnant
9bb1429f20 Reduce the number of move constructions when constructing a std::function. This fixes http://llvm.org/bugs/show_bug.cgi?id=12105.
llvm-svn: 151652
2012-02-28 19:47:38 +00:00
Howard Hinnant
f2f2d8b98d Modernize conversion to bool to the explicit bool conversion operator (library wide). This fixes http://llvm.org/bugs/show_bug.cgi?id=12058.
llvm-svn: 151088
2012-02-21 21:46:43 +00:00
Howard Hinnant
67f3964766 Modernize relational operators for shared_ptr and unique_ptr. This includes adding support for nullptr, and using less<T*>. Fixes http://llvm.org/bugs/show_bug.cgi?id=12056.
llvm-svn: 151084
2012-02-21 21:02:58 +00:00
Howard Hinnant
9b0cd149aa Version #next on the hash functions for scalars. This builds on Dave's 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
2011-12-03 21:11:36 +00:00
Howard Hinnant
7f3884d58a I had picked up the wrong version of DaveZ's hash patches. Corrected here.
llvm-svn: 145728
2011-12-02 23:45:22 +00:00
Howard Hinnant
425d482c21 Fixes to hash for long long, unsigned long long, float, double and long double. Credit Dave Zarzycki
llvm-svn: 145721
2011-12-02 22:52:09 +00:00
Howard Hinnant
c206366fd7 Quash a whole bunch of warnings
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant
c003db1fca Further macro protection by replacing _[A-Z] with _[A-Z]p
llvm-svn: 145410
2011-11-29 18:15:50 +00:00
Howard Hinnant
073458b1ab Windows support by Ruben Van Boxem.
llvm-svn: 142235
2011-10-17 20:05:10 +00:00
Howard Hinnant
086d0de171 http://llvm.org/bugs/show_bug.cgi?id=10250
llvm-svn: 134325
2011-07-02 18:22:36 +00:00
Howard Hinnant
ce48a1137d _STD -> _VSTD to avoid macro clash on windows
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Howard Hinnant
542b2507de I've seen this question enough times to know that it should be fixed: http://stackoverflow.com/questions/6193734/implicit-conversions-with-stdfunction
llvm-svn: 132363
2011-05-31 21:45:26 +00:00
Howard Hinnant
af152c8431 minor documentation update
llvm-svn: 132286
2011-05-29 13:53:56 +00:00
Howard Hinnant
6a07d6f06d noexcept for <functional>.
llvm-svn: 132264
2011-05-28 17:59:48 +00:00
Howard Hinnant
2fa07ae9a0 Fix const correctness bug in bind involving reference_wrapper found by Jonathan Sauer
llvm-svn: 131852
2011-05-22 15:07:43 +00:00
Howard Hinnant
2344d6c195 Simplied bind using __invoke. In the process, found and fixed a couple of bugs. C++11 only.
llvm-svn: 131667
2011-05-19 19:41:47 +00:00
Howard Hinnant
651fedb82c Fixed bug in recently introduced bind move constructor
llvm-svn: 131484
2011-05-17 20:27:51 +00:00
Howard Hinnant
07de7bcaa0 Supply missing move ctor in __bind_r, though this one will eventually be defaulted
llvm-svn: 131408
2011-05-16 16:19:01 +00:00
Douglas Gregor
175a104028 Remove an (incorrect) compiler workaround in the __mu function. The
workaround relied on rvalue references binding to non-function
lvalues, while the original formulation (with std::forward) does the
right thing.

llvm-svn: 124241
2011-01-25 23:11:15 +00:00
Howard Hinnant
412dbebe1b license change
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
0f444b3b16 Corrected an inconsistency with recent changes in tuple, and perfect forwarding within bind
llvm-svn: 115930
2010-10-07 18:03:23 +00:00
Howard Hinnant
0af133f941 visibility-decoration.
llvm-svn: 114496
2010-09-21 22:55:27 +00:00
Howard Hinnant
37030a77a0 Fix another const bug in function. Thanks to Daniel Krugler for finding this and the previous bug.
llvm-svn: 113686
2010-09-11 15:33:21 +00:00
Howard Hinnant
b3371f6f49 Fixing whitespace problems
llvm-svn: 111750
2010-08-22 00:02:43 +00:00
Howard Hinnant
9b0b6d45d2 Installed allocator into std::function
llvm-svn: 111672
2010-08-20 19:36:46 +00:00
Howard Hinnant
cbbc430d24 JP 3 & JP 4
llvm-svn: 111547
2010-08-19 19:20:10 +00:00
Howard Hinnant
54b409fdb9 now works with -fno-exceptions and -fno-rtti
llvm-svn: 110828
2010-08-11 17:04:31 +00:00
Howard Hinnant
d1803b6c87 [util.smartptr.hash]
llvm-svn: 105393
2010-06-03 16:42:57 +00:00
Howard Hinnant
5b08a8a432 Wiped out some non-ascii characters that snuck into the copyright.
llvm-svn: 103516
2010-05-11 21:36:01 +00:00
Howard Hinnant
3e519524c1 libcxx initial import
llvm-svn: 103490
2010-05-11 19:42:16 +00:00