//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 // UNSUPPORTED: libcpp-has-no-incomplete-ranges // // template S, weakly_incrementable O, class Proj = identity, // indirect_equivalence_relation> C = ranges::equal_to> // requires indirectly_copyable && // (forward_iterator || // (input_iterator && same_as, iter_value_t>) || // indirectly_copyable_storable) // constexpr unique_copy_result // unique_copy(I first, S last, O result, C comp = {}, Proj proj = {}); // Since C++20 // // template, Proj>> C = ranges::equal_to> // requires indirectly_copyable, O> && // (forward_iterator> || // (input_iterator && same_as, iter_value_t>) || // indirectly_copyable_storable, O>) // constexpr unique_copy_result, O> // unique_copy(R&& r, O result, C comp = {}, Proj proj = {}); // Since C++20 #include #include #include #include #include #include "almost_satisfies_types.h" #include "test_iterators.h" // TODO: SFINAE tests. constexpr bool test() { // TODO: main tests. // TODO: A custom comparator works. // TODO: A custom projection works. return true; } int main(int, char**) { test(); static_assert(test()); return 0; }