1*e65d3760SKonstantin Varlamov //===----------------------------------------------------------------------===// 2*e65d3760SKonstantin Varlamov // 3*e65d3760SKonstantin Varlamov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*e65d3760SKonstantin Varlamov // See https://llvm.org/LICENSE.txt for license information. 5*e65d3760SKonstantin Varlamov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*e65d3760SKonstantin Varlamov // 7*e65d3760SKonstantin Varlamov //===----------------------------------------------------------------------===// 8*e65d3760SKonstantin Varlamov 9*e65d3760SKonstantin Varlamov // UNSUPPORTED: c++03, c++11, c++14, c++17 10*e65d3760SKonstantin Varlamov 11*e65d3760SKonstantin Varlamov // template<class In, class Out> 12*e65d3760SKonstantin Varlamov // concept indirectly_copyable; 13*e65d3760SKonstantin Varlamov 14*e65d3760SKonstantin Varlamov #include <iterator> 15*e65d3760SKonstantin Varlamov 16*e65d3760SKonstantin Varlamov template<std::indirectly_readable I, class O> indirectly_copyable_subsumption()17*e65d3760SKonstantin Varlamovconstexpr bool indirectly_copyable_subsumption() { 18*e65d3760SKonstantin Varlamov return false; 19*e65d3760SKonstantin Varlamov } 20*e65d3760SKonstantin Varlamov 21*e65d3760SKonstantin Varlamov template<class I, class O> 22*e65d3760SKonstantin Varlamov requires std::indirectly_copyable<I, O> indirectly_copyable_subsumption()23*e65d3760SKonstantin Varlamovconstexpr bool indirectly_copyable_subsumption() { 24*e65d3760SKonstantin Varlamov return true; 25*e65d3760SKonstantin Varlamov } 26*e65d3760SKonstantin Varlamov 27*e65d3760SKonstantin Varlamov static_assert(indirectly_copyable_subsumption<int*, int*>()); 28