17b20e05cSzoecarver //===----------------------------------------------------------------------===// 27b20e05cSzoecarver // 37b20e05cSzoecarver // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 47b20e05cSzoecarver // See https://llvm.org/LICENSE.txt for license information. 57b20e05cSzoecarver // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 67b20e05cSzoecarver // 77b20e05cSzoecarver //===----------------------------------------------------------------------===// 87b20e05cSzoecarver 97b20e05cSzoecarver // UNSUPPORTED: c++03, c++11, c++14, c++17 107b20e05cSzoecarver // UNSUPPORTED: libcpp-has-no-incomplete-ranges 117b20e05cSzoecarver 12*fc3923faSArthur O'Dwyer // iota_view() requires default_initializable<W> = default; 137b20e05cSzoecarver 147b20e05cSzoecarver #include <ranges> 157b20e05cSzoecarver #include <cassert> 167b20e05cSzoecarver 177b20e05cSzoecarver #include "test_macros.h" 187b20e05cSzoecarver #include "types.h" 197b20e05cSzoecarver test()207b20e05cSzoecarverconstexpr bool test() { 217b20e05cSzoecarver { 227b20e05cSzoecarver std::ranges::iota_view<Int42<DefaultTo42>> io; 237b20e05cSzoecarver assert((*io.begin()).value_ == 42); 247b20e05cSzoecarver } 257b20e05cSzoecarver 267b20e05cSzoecarver return true; 277b20e05cSzoecarver } 287b20e05cSzoecarver main(int,char **)297b20e05cSzoecarverint main(int, char**) { 307b20e05cSzoecarver test(); 317b20e05cSzoecarver static_assert(test()); 327b20e05cSzoecarver 337b20e05cSzoecarver static_assert(!std::default_initializable<Int42<ValueCtor>>); 347b20e05cSzoecarver static_assert( std::default_initializable<Int42<DefaultTo42>>); 357b20e05cSzoecarver 367b20e05cSzoecarver return 0; 377b20e05cSzoecarver } 38