These tests just return true without checking that the results of the algorithms. Although it should be safe to assume that the algorithms behave the same at compile-time as at run-time, we can use these tests to verify it. This replaces each 'return true' statement with a condition that depends on the basic functionality of the algorithm, such as returning an iterator to the right position. libstdc++-v3/ChangeLog: * testsuite/25_algorithms/all_of/constexpr.cc: Check result of the algorithm. * testsuite/25_algorithms/any_of/constexpr.cc: Likewise. * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise. * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise. * testsuite/25_algorithms/count/constexpr.cc: Likewise. * testsuite/25_algorithms/equal/constexpr.cc: Likewise. * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise. * testsuite/25_algorithms/fill/constexpr.cc: Likewise. * testsuite/25_algorithms/find_end/constexpr.cc: Likewise. * testsuite/25_algorithms/find_if/constexpr.cc: Likewise. * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise. * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise. * testsuite/25_algorithms/is_sorted_until/constexpr.cc: Likewise. * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: Likewise. * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise. * testsuite/25_algorithms/merge/constexpr.cc: Likewise. * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise. * testsuite/25_algorithms/none_of/constexpr.cc: Likewise. * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise. * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise. * testsuite/25_algorithms/reverse/constexpr.cc: Likewise. * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/search/constexpr.cc: Likewise. * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise. * testsuite/25_algorithms/set_intersection/constexpr.cc: Likewise. * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: Likewise. * testsuite/25_algorithms/set_union/constexpr.cc: Likewise. * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
34 lines
1023 B
C++
34 lines
1023 B
C++
//
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
// software; you can redistribute it and/or modify it under the
|
|
// terms of the GNU General Public License as published by the
|
|
// Free Software Foundation; either version 3, or (at your option)
|
|
// any later version.
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License along
|
|
// with this library; see the file COPYING3. If not see
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
// { dg-options "-std=gnu++2a" }
|
|
// { dg-do compile { target c++2a } }
|
|
|
|
#include <algorithm>
|
|
#include <array>
|
|
|
|
constexpr bool
|
|
test()
|
|
{
|
|
std::array<int, 12> ar0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
|
|
|
|
std::reverse(ar0.begin() + 2, ar0.begin() + 9);
|
|
|
|
return ar0[2] == 8 && ar0[8] == 2;
|
|
}
|
|
|
|
static_assert(test());
|