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 11481ad59bSzoecarver // Tests that <value_> is a <copyable-box>. 12481ad59bSzoecarver 13481ad59bSzoecarver #include <cassert> 14*52915d78SNikolas Klauser #include <ranges> 15*52915d78SNikolas Klauser #include <utility> 16481ad59bSzoecarver 17481ad59bSzoecarver #include "test_macros.h" 18481ad59bSzoecarver 19481ad59bSzoecarver struct NotAssignable { 20481ad59bSzoecarver NotAssignable() = default; 21481ad59bSzoecarver NotAssignable(const NotAssignable&) = default; 22481ad59bSzoecarver NotAssignable(NotAssignable&&) = default; 23481ad59bSzoecarver 24481ad59bSzoecarver NotAssignable& operator=(const NotAssignable&) = delete; 25481ad59bSzoecarver NotAssignable& operator=(NotAssignable&&) = delete; 26481ad59bSzoecarver }; 27481ad59bSzoecarver test()28481ad59bSzoecarverconstexpr bool test() { 29481ad59bSzoecarver const std::ranges::single_view<NotAssignable> a; 30481ad59bSzoecarver std::ranges::single_view<NotAssignable> b; 31481ad59bSzoecarver b = a; 32481ad59bSzoecarver b = std::move(a); 33481ad59bSzoecarver 34481ad59bSzoecarver return true; 35481ad59bSzoecarver } 36481ad59bSzoecarver main(int,char **)37481ad59bSzoecarverint main(int, char**) { 38481ad59bSzoecarver test(); 39481ad59bSzoecarver static_assert(test()); 40481ad59bSzoecarver 41481ad59bSzoecarver return 0; 42481ad59bSzoecarver } 43