mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
Revert r225053: Add an ArrayRef upcasting constructor from ArrayRef<U*> -> ArrayRef<T*> where T is a base of U.
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
This commit is contained in:
parent
2f1e3d88b7
commit
4b77e07165
@ -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
|
||||
/// @{
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user