1*427a5cf1SLouis Dionne //===----------------------------------------------------------------------===// 2*427a5cf1SLouis Dionne // 3*427a5cf1SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*427a5cf1SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*427a5cf1SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*427a5cf1SLouis Dionne // 7*427a5cf1SLouis Dionne //===----------------------------------------------------------------------===// 8*427a5cf1SLouis Dionne 9*427a5cf1SLouis Dionne // REQUIRES: has-unix-headers 10*427a5cf1SLouis Dionne // UNSUPPORTED: c++03 11*427a5cf1SLouis Dionne // UNSUPPORTED: libcpp-hardening-mode=none 12*427a5cf1SLouis Dionne // XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing 13*427a5cf1SLouis Dionne 14*427a5cf1SLouis Dionne // test that array<T, 0>::back() triggers an assertion 15*427a5cf1SLouis Dionne 16*427a5cf1SLouis Dionne #include <array> 17*427a5cf1SLouis Dionne 18*427a5cf1SLouis Dionne #include "check_assertion.h" 19*427a5cf1SLouis Dionne 20*427a5cf1SLouis Dionne int main(int, char**) { 21*427a5cf1SLouis Dionne { 22*427a5cf1SLouis Dionne typedef std::array<int, 0> C; 23*427a5cf1SLouis Dionne C c = {}; 24*427a5cf1SLouis Dionne C const& cc = c; 25*427a5cf1SLouis Dionne TEST_LIBCPP_ASSERT_FAILURE(c.back(), "cannot call array<T, 0>::back() on a zero-sized array"); 26*427a5cf1SLouis Dionne TEST_LIBCPP_ASSERT_FAILURE(cc.back(), "cannot call array<T, 0>::back() on a zero-sized array"); 27*427a5cf1SLouis Dionne } 28*427a5cf1SLouis Dionne { 29*427a5cf1SLouis Dionne typedef std::array<const int, 0> C; 30*427a5cf1SLouis Dionne C c = {{}}; 31*427a5cf1SLouis Dionne C const& cc = c; 32*427a5cf1SLouis Dionne TEST_LIBCPP_ASSERT_FAILURE(c.back(), "cannot call array<T, 0>::back() on a zero-sized array"); 33*427a5cf1SLouis Dionne TEST_LIBCPP_ASSERT_FAILURE(cc.back(), "cannot call array<T, 0>::back() on a zero-sized array"); 34*427a5cf1SLouis Dionne } 35*427a5cf1SLouis Dionne 36*427a5cf1SLouis Dionne return 0; 37*427a5cf1SLouis Dionne } 38