diff options
| author | Craig Topper <craig.topper@gmail.com> | 2014-08-29 06:01:43 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@gmail.com> | 2014-08-29 06:01:43 +0000 |
| commit | 7e24c0a89c0c936a4763c60e3c4c573852a26231 (patch) | |
| tree | ab10b6f5a2b2484fe9d500ef1ff1146a4013d2f7 | |
| parent | 780dd3b71af51a8a3d9aeed55cd7b7aaa88370f5 (diff) | |
| download | bcm5719-llvm-7e24c0a89c0c936a4763c60e3c4c573852a26231.tar.gz bcm5719-llvm-7e24c0a89c0c936a4763c60e3c4c573852a26231.zip | |
Add conversion constructor to convert ArrayRef<T*> to ArrayRef<const T*>. Reviewed with Chandler and David Blaikie.
llvm-svn: 216709
| -rw-r--r-- | llvm/include/llvm/ADT/ArrayRef.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/ArrayRef.h b/llvm/include/llvm/ADT/ArrayRef.h index 0351cf5bb4c..8c14a423c8f 100644 --- a/llvm/include/llvm/ADT/ArrayRef.h +++ b/llvm/include/llvm/ADT/ArrayRef.h @@ -104,6 +104,14 @@ namespace llvm { Length(Vec.size()) {} #endif + /// Construct an ArrayRef<const T*> from ArrayRef<T*>. This uses SFINAE to + /// ensure that only ArrayRefs of pointers can be converted. + template <typename U> + ArrayRef(const ArrayRef<U *> &A, + typename std::enable_if< + std::is_convertible<U *const *, T const *>::value>::type* = 0) + : Data(A.data()), Length(A.size()) {} + /// @} /// @name Simple Operations /// @{ |

