xref: /llvm-project/libcxx/test/std/containers/sequences/array/assert.back.pass.cpp (revision 427a5cf105c409993c812f4fb1868bac96fce0c5)
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