Stdlib ArrayRef template deduction guides

Adding template deduction guides so that ArrayRef initialization works
without warnings.
This commit is contained in:
Evan Wilde
2023-07-27 17:48:51 -07:00
parent 1ded8b5d7f
commit aa14c91b0b

View File

@@ -469,6 +469,28 @@ namespace llvm {
~OwningArrayRef() { delete[] this->data(); }
};
/// C++17 ArrayRef deduction guides
template <typename T>
ArrayRef(const T &) -> ArrayRef<T>;
template <typename T>
ArrayRef(const T *, size_t) -> ArrayRef<T>;
template <typename T>
ArrayRef(const T *, const T *) -> ArrayRef<T>;
template <typename T>
ArrayRef(const SmallVectorImpl<T> &Vec) -> ArrayRef<T>;
template <typename T, unsigned N>
ArrayRef(const SmallVector<T, N> &Vec) -> ArrayRef<T>;
template <typename T, typename A>
ArrayRef(const std::vector<T, A> &) -> ArrayRef<T>;
template <typename T, std::size_t N>
ArrayRef(const std::array<T, N> &Vec) -> ArrayRef<T>;
template <typename T>
ArrayRef(const ArrayRef<T> &Vec) -> ArrayRef<T>;
template <typename T>
ArrayRef(ArrayRef<T> &Vec) -> ArrayRef<T>;
template <typename T, size_t N>
ArrayRef(const T (&Arr)[N]) -> ArrayRef<T>;
/// @name ArrayRef Convenience constructors
/// @{