xref: /llvm-project/libcxx/test/std/ranges/range.factories/range.single.view/assign.pass.cpp (revision b8cb1dc9ea87faa8e8e9ab7a31710a8c0bb8b084)
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()28481ad59bSzoecarver constexpr 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 **)37481ad59bSzoecarver int main(int, char**) {
38481ad59bSzoecarver   test();
39481ad59bSzoecarver   static_assert(test());
40481ad59bSzoecarver 
41481ad59bSzoecarver   return 0;
42481ad59bSzoecarver }
43