mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-26 06:04:47 +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. llvm-svn: 225064
This commit is contained in:
parent
b27ce0e2ce
commit
d5912b0090
@ -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