Add LLVM_HAS_INITIALIZER_LISTS for upcoming C++11 support. Use it in ArrayRef

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194362 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Pete Cooper 2013-11-11 03:58:00 +00:00
parent 65d1be119b
commit 43ed63bc83
2 changed files with 16 additions and 0 deletions

View File

@ -83,6 +83,13 @@ namespace llvm {
/*implicit*/ LLVM_CONSTEXPR ArrayRef(const T (&Arr)[N])
: Data(Arr), Length(N) {}
#if LLVM_HAS_INITIALIZER_LISTS
/// Construct an ArrayRef from a std::initializer_list.
/*implicit*/ ArrayRef(const std::initializer_list<T> &Vec)
: Data(Vec.begin() == Vec.end() ? (T*)0 : Vec.begin()),
Length(Vec.size()) {}
#endif
/// @}
/// @name Simple Operations
/// @{

View File

@ -403,4 +403,13 @@
# define LLVM_ENUM_INT_TYPE(intty)
#endif
/// \brief Does the compiler support generalized initializers (using braced
/// lists and std::initializer_list).
#if (__has_feature(cxx_generalized_initializers) \
|| defined(__GXX_EXPERIMENTAL_CXX0X__))
#define LLVM_HAS_INITIALIZER_LISTS 1
#else
#define LLVM_HAS_INITIALIZER_LISTS 0
#endif
#endif