Revert r225053: Add an ArrayRef upcasting constructor from ArrayRef<U*> -> ArrayRef...
authorChandler Carruth <chandlerc@gmail.com>
Thu, 1 Jan 2015 13:01:25 +0000 (13:01 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 1 Jan 2015 13:01:25 +0000 (13:01 +0000)
This appears to have broken at least the windows build bots due to
compile errors in the predicate that didn't simply supress the overload.
I'm not sure what the fix is, and the bots have been broken for a long
time now so I'm just reverting until Michael can figure out a fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225064 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ArrayRef.h
unittests/ADT/ArrayRefTest.cpp

index b93142d90bcdc7b45730104727e2b616b4f7bb81..8c14a423c8f50614ff30856b19d11c96774b359e 100644 (file)
@@ -112,16 +112,6 @@ namespace llvm {
                  std::is_convertible<U *const *, T const *>::value>::type* = 0)
       : Data(A.data()), Length(A.size()) {}
 
-    /// Construct an ArrayRef<T*> from an ArrayRef<U*> where T is a super class
-    /// of U. This uses SFINAE to ensure that only ArrayRefs with this property
-    /// can be converted. This is an upcasting constructor.
-    template <typename U>
-    ArrayRef(const ArrayRef<U> &A,
-             typename std::enable_if<std::is_base_of<
-                 typename std::remove_pointer<T>::type,
-                 typename std::remove_pointer<U>::type>::value>::type * = 0)
-        : Data(reinterpret_cast<T const *>(A.data())), Length(A.size()) {}
-
     /// @}
     /// @name Simple Operations
     /// @{
index 9cd17f00d9aa464745097f0cb476405ee41a3251..f9c98a563fa3cbb39035cac2f034e82b31f11b3f 100644 (file)
@@ -90,39 +90,4 @@ TEST(ArrayRefTest, ConstConvert) {
   a = ArrayRef<int *>(A);
 }
 
-struct A {
-  int data;
-
-  A() : data(0) {}
-};
-
-struct B : A {
-  int data2;
-
-  B() : A(), data2(0) {}
-};
-
-TEST(ArrayRefTest, UpcastConvert) {
-  B Data[5];
-
-  for (unsigned i = 0, e = 5; i != e; ++i) {
-    Data[i].data = i + 5;
-    Data[i].data2 = i + 30;
-  }
-
-  B *DataPtrs[5];
-  for (unsigned i = 0, e = 5; i != e; ++i) {
-    DataPtrs[i] = &Data[i];
-  }
-
-  ArrayRef<B *> BArray(DataPtrs, 5);
-  ArrayRef<A *> AArray(BArray);
-
-  EXPECT_TRUE(AArray.size() == 5);
-  for (unsigned i = 0, e = 5; i != e; ++i) {
-    A *a = AArray[i];
-    EXPECT_TRUE(a->data == int(i + 5));
-  }
-}
-
 } // end anonymous namespace