This revision was not accepted when it landed; it landed in state "Needs Review". This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG3677ee65d192: Move from llvm::makeArrayRef to ArrayRef deduction guides (authored by serge-sans-paille).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140896/new/ https://reviews.llvm.org/D140896 Files: llvm/include/llvm/ADT/ArrayRef.h Index: llvm/include/llvm/ADT/ArrayRef.h =================================================================== --- llvm/include/llvm/ADT/ArrayRef.h +++ llvm/include/llvm/ADT/ArrayRef.h @@ -466,9 +466,44 @@ ~OwningArrayRef() { delete[] this->data(); } }; - /// @name ArrayRef Convenience constructors + /// @name ArrayRef Deduction guides /// @{ + /// Deduction guide to construct an ArrayRef from a single element. + template <typename T> ArrayRef(const T &OneElt) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a pointer and length + template <typename T> ArrayRef(const T *data, size_t length) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a range + template <typename T> ArrayRef(const T *data, const T *end) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a SmallVector + template <typename T> ArrayRef(const SmallVectorImpl<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a SmallVector + template <typename T, unsigned N> + ArrayRef(const SmallVector<T, N> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a std::vector + template <typename T> ArrayRef(const std::vector<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a std::array + template <typename T, std::size_t N> + ArrayRef(const std::array<T, N> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from an ArrayRef (no-op) (const) + template <typename T> ArrayRef(const ArrayRef<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from an ArrayRef (no-op) + template <typename T> ArrayRef(ArrayRef<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a C array. + template <typename T, size_t N> ArrayRef(const T (&Arr)[N]) -> ArrayRef<T>; + /// @} + + /// @name ArrayRef Convenience constructors + /// @{ /// Construct an ArrayRef from a single element. template<typename T> ArrayRef<T> makeArrayRef(const T &OneElt) {
Index: llvm/include/llvm/ADT/ArrayRef.h =================================================================== --- llvm/include/llvm/ADT/ArrayRef.h +++ llvm/include/llvm/ADT/ArrayRef.h @@ -466,9 +466,44 @@ ~OwningArrayRef() { delete[] this->data(); } }; - /// @name ArrayRef Convenience constructors + /// @name ArrayRef Deduction guides /// @{ + /// Deduction guide to construct an ArrayRef from a single element. + template <typename T> ArrayRef(const T &OneElt) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a pointer and length + template <typename T> ArrayRef(const T *data, size_t length) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a range + template <typename T> ArrayRef(const T *data, const T *end) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a SmallVector + template <typename T> ArrayRef(const SmallVectorImpl<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a SmallVector + template <typename T, unsigned N> + ArrayRef(const SmallVector<T, N> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a std::vector + template <typename T> ArrayRef(const std::vector<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a std::array + template <typename T, std::size_t N> + ArrayRef(const std::array<T, N> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from an ArrayRef (no-op) (const) + template <typename T> ArrayRef(const ArrayRef<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from an ArrayRef (no-op) + template <typename T> ArrayRef(ArrayRef<T> &Vec) -> ArrayRef<T>; + + /// Deduction guide to construct an ArrayRef from a C array. + template <typename T, size_t N> ArrayRef(const T (&Arr)[N]) -> ArrayRef<T>; + /// @} + + /// @name ArrayRef Convenience constructors + /// @{ /// Construct an ArrayRef from a single element. template<typename T> ArrayRef<T> makeArrayRef(const T &OneElt) {
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits