1481ad59bSzoecarver //===----------------------------------------------------------------------===// 2481ad59bSzoecarver // 3481ad59bSzoecarver // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4481ad59bSzoecarver // See https://llvm.org/LICENSE.txt for license information. 5481ad59bSzoecarver // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6481ad59bSzoecarver // 7481ad59bSzoecarver //===----------------------------------------------------------------------===// 8481ad59bSzoecarver 9481ad59bSzoecarver // UNSUPPORTED: c++03, c++11, c++14, c++17 10481ad59bSzoecarver // UNSUPPORTED: libcpp-has-no-incomplete-ranges 11481ad59bSzoecarver 12481ad59bSzoecarver // Tests that <value_> is a <copyable-box>. 13481ad59bSzoecarver 14481ad59bSzoecarver #include <cassert> 15*52915d78SNikolas Klauser #include <ranges> 16*52915d78SNikolas Klauser #include <utility> 17481ad59bSzoecarver 18481ad59bSzoecarver #include "test_macros.h" 19481ad59bSzoecarver 20481ad59bSzoecarver struct NotAssignable { 21481ad59bSzoecarver NotAssignable() = default; 22481ad59bSzoecarver NotAssignable(const NotAssignable&) = default; 23481ad59bSzoecarver NotAssignable(NotAssignable&&) = default; 24481ad59bSzoecarver 25481ad59bSzoecarver NotAssignable& operator=(const NotAssignable&) = delete; 26481ad59bSzoecarver NotAssignable& operator=(NotAssignable&&) = delete; 27481ad59bSzoecarver }; 28481ad59bSzoecarver test()29481ad59bSzoecarverconstexpr bool test() { 30481ad59bSzoecarver const std::ranges::single_view<NotAssignable> a; 31481ad59bSzoecarver std::ranges::single_view<NotAssignable> b; 32481ad59bSzoecarver b = a; 33481ad59bSzoecarver b = std::move(a); 34481ad59bSzoecarver 35481ad59bSzoecarver return true; 36481ad59bSzoecarver } 37481ad59bSzoecarver main(int,char **)38481ad59bSzoecarverint main(int, char**) { 39481ad59bSzoecarver test(); 40481ad59bSzoecarver static_assert(test()); 41481ad59bSzoecarver 42481ad59bSzoecarver return 0; 43481ad59bSzoecarver } 44