llvm-project/libcxx
Douglas Gregor a7b2241407 Eliminate the C++0x-only is_convertible testing function that accepts
a cv-qualifier rvalue reference to the type, e.g.,

  template <class _Tp> char  __test(const volatile typename remove_reference<_Tp>::type&&);

The use of this function signature rather than the more
straightforward one used in C++98/03 mode, e.g.,

  template <class _Tp> char  __test(_Tp);

is broken in two ways:

  1) An rvalue reference cannot bind to lvalues, so is_convertible<X&,
  X&>::value would be false. This breaks two of the unique_ptr tests
  on Clang and GCC >= 4.5. Prior GCC's seem to have allowed rvalue
  references to bind to lvalues, allowing this bug to slip in.

  2) By adding cv-qualifiers to the type we're converting to, we get
  some incorrect "true" results for, e.g., is_convertible<const X&, X&>::value.

llvm-svn: 124166
2011-01-25 01:15:41 +00:00
..
cmake Add CMake build and fix major Linux blockers. 2010-12-10 19:47:54 +00:00
include Eliminate the C++0x-only is_convertible testing function that accepts 2011-01-25 01:15:41 +00:00
lib Effort to reduce the number of exported symbols 2010-12-17 14:46:43 +00:00
src Effort to reduce the number of exported symbols 2010-12-17 14:46:43 +00:00
test Eliminate the C++0x-only is_convertible testing function that accepts 2011-01-25 01:15:41 +00:00
www type_traits intrinsics design 2010-11-19 01:48:13 +00:00
CMakeLists.txt Add CMake build and fix major Linux blockers. 2010-12-10 19:47:54 +00:00
CREDITS.TXT Marshall Clow's fix for Bug 8421. 2011-01-04 19:21:05 +00:00
LICENSE.TXT libc++ is now dual licensed under both UIUC and MIT licenses. 2010-11-16 21:40:19 +00:00
Makefile <rdar://problem/8279559> [libstdcxx] use new linker options to make symbols non-weak 2010-09-10 20:42:36 +00:00