Skip to content

Commit aa14c91

Browse files
committed
Stdlib ArrayRef template deduction guides
Adding template deduction guides so that ArrayRef initialization works without warnings.
1 parent 1ded8b5 commit aa14c91

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

stdlib/include/llvm/ADT/ArrayRef.h

+22
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,28 @@ namespace llvm {
469469
~OwningArrayRef() { delete[] this->data(); }
470470
};
471471

472+
/// C++17 ArrayRef deduction guides
473+
template <typename T>
474+
ArrayRef(const T &) -> ArrayRef<T>;
475+
template <typename T>
476+
ArrayRef(const T *, size_t) -> ArrayRef<T>;
477+
template <typename T>
478+
ArrayRef(const T *, const T *) -> ArrayRef<T>;
479+
template <typename T>
480+
ArrayRef(const SmallVectorImpl<T> &Vec) -> ArrayRef<T>;
481+
template <typename T, unsigned N>
482+
ArrayRef(const SmallVector<T, N> &Vec) -> ArrayRef<T>;
483+
template <typename T, typename A>
484+
ArrayRef(const std::vector<T, A> &) -> ArrayRef<T>;
485+
template <typename T, std::size_t N>
486+
ArrayRef(const std::array<T, N> &Vec) -> ArrayRef<T>;
487+
template <typename T>
488+
ArrayRef(const ArrayRef<T> &Vec) -> ArrayRef<T>;
489+
template <typename T>
490+
ArrayRef(ArrayRef<T> &Vec) -> ArrayRef<T>;
491+
template <typename T, size_t N>
492+
ArrayRef(const T (&Arr)[N]) -> ArrayRef<T>;
493+
472494
/// @name ArrayRef Convenience constructors
473495
/// @{
474496

0 commit comments

Comments
 (0)