diff --git a/libcxx/include/array b/libcxx/include/array index c11f4bd74f5f..029bfd00a5c0 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -55,7 +55,7 @@ struct array // capacity: constexpr size_type size() const noexcept; constexpr size_type max_size() const noexcept; - bool empty() const noexcept; + constexpr bool empty() const noexcept; // element access: reference operator[](size_type n); @@ -173,11 +173,11 @@ struct _LIBCPP_VISIBLE array // capacity: _LIBCPP_INLINE_VISIBILITY - /*constexpr*/ size_type size() const _NOEXCEPT {return _Size;} + _LIBCPP_CONSTEXPR size_type size() const _NOEXCEPT {return _Size;} _LIBCPP_INLINE_VISIBILITY - /*constexpr*/ size_type max_size() const _NOEXCEPT {return _Size;} + _LIBCPP_CONSTEXPR size_type max_size() const _NOEXCEPT {return _Size;} _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return _Size == 0;} + _LIBCPP_CONSTEXPR bool empty() const _NOEXCEPT {return _Size == 0;} // element access: _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) {return __elems_[__n];} diff --git a/libcxx/test/containers/sequences/array/array.size/size.pass.cpp b/libcxx/test/containers/sequences/array/array.size/size.pass.cpp index 87344ae5373e..4078fd5ca9f7 100644 --- a/libcxx/test/containers/sequences/array/array.size/size.pass.cpp +++ b/libcxx/test/containers/sequences/array/array.size/size.pass.cpp @@ -28,4 +28,18 @@ int main() C c = {}; assert(c.size() == 0); } +#ifndef _LIBCPP_HAS_NO_CONSTEXPR + { + typedef double T; + typedef std::array C; + constexpr C c = {1, 2, 3.5}; + static_assert(c.size() == 3, ""); + } + { + typedef double T; + typedef std::array C; + constexpr C c = {}; + static_assert(c.size() == 0, ""); + } +#endif }