10f4b41e0Szoecarver //===----------------------------------------------------------------------===//
20f4b41e0Szoecarver //
30f4b41e0Szoecarver // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40f4b41e0Szoecarver // See https://llvm.org/LICENSE.txt for license information.
50f4b41e0Szoecarver // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60f4b41e0Szoecarver //
70f4b41e0Szoecarver //===----------------------------------------------------------------------===//
80f4b41e0Szoecarver 
90f4b41e0Szoecarver // UNSUPPORTED: c++03, c++11, c++14, c++17
100f4b41e0Szoecarver // UNSUPPORTED: libcpp-has-no-incomplete-ranges
110f4b41e0Szoecarver 
120f4b41e0Szoecarver // sentinel() = default;
130f4b41e0Szoecarver // constexpr explicit sentinel(sentinel_t<Base> end);
140f4b41e0Szoecarver // constexpr sentinel(sentinel<!Const> s)
150f4b41e0Szoecarver //   requires Const && convertible_to<sentinel_t<V>, sentinel_t<Base>>;
160f4b41e0Szoecarver 
170f4b41e0Szoecarver #include <ranges>
180f4b41e0Szoecarver #include <cassert>
190f4b41e0Szoecarver 
200f4b41e0Szoecarver #include "test_macros.h"
210f4b41e0Szoecarver #include "test_iterators.h"
220f4b41e0Szoecarver #include "../types.h"
230f4b41e0Szoecarver 
test()240f4b41e0Szoecarver constexpr bool test() {
250f4b41e0Szoecarver   int buffer[8] = {1, 2, 3, 4, 5, 6, 7, 8};
260f4b41e0Szoecarver   {
27*1fe897dfSArthur O'Dwyer     std::ranges::take_view<MoveOnlyView> tv(MoveOnlyView(buffer), 4);
28*1fe897dfSArthur O'Dwyer     std::same_as<sentinel_wrapper<int*>> auto sw1 = tv.end().base();
29*1fe897dfSArthur O'Dwyer     assert(base(sw1) == buffer + 8);
30*1fe897dfSArthur O'Dwyer     std::same_as<sentinel_wrapper<int*>> auto sw2 = std::as_const(tv).end().base();
31*1fe897dfSArthur O'Dwyer     assert(base(sw2) == buffer + 8);
320f4b41e0Szoecarver   }
330f4b41e0Szoecarver   return true;
340f4b41e0Szoecarver }
350f4b41e0Szoecarver 
main(int,char **)360f4b41e0Szoecarver int main(int, char**) {
370f4b41e0Szoecarver   test();
380f4b41e0Szoecarver   static_assert(test());
390f4b41e0Szoecarver 
400f4b41e0Szoecarver   return 0;
410f4b41e0Szoecarver }
42