//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // REQUIRES: has-unix-headers // UNSUPPORTED: c++03 // UNSUPPORTED: libcpp-hardening-mode=none // XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing // test that array::front() triggers an assertion #include #include "check_assertion.h" int main(int, char**) { { typedef std::array C; C c = {}; C const& cc = c; TEST_LIBCPP_ASSERT_FAILURE(c.front(), "cannot call array::front() on a zero-sized array"); TEST_LIBCPP_ASSERT_FAILURE(cc.front(), "cannot call array::front() on a zero-sized array"); } { typedef std::array C; C c = {{}}; C const& cc = c; TEST_LIBCPP_ASSERT_FAILURE(c.front(), "cannot call array::front() on a zero-sized array"); TEST_LIBCPP_ASSERT_FAILURE(cc.front(), "cannot call array::front() on a zero-sized array"); } return 0; }