template <typename InputIt, typename OutputIt>
constexpr inline OutputIt unique_copy(InputIt first, InputIt last, OutputIt d_first);
template <typename InputIt, typename OutputIt, typename BinaryPredicate>
constexpr inline OutputIt unique_copy(InputIt first, InputIt last, OutputIt d_first, BinaryPredicate p);
These functions are similar to std::unique_copy
, but they are guaranteed not to construct any temporary elements. Because of this, multidim::unique_copy
has the following requirements:
InputIt
must meet the requirements of LegacyInputIteratorOutputIt
must meet the requirements of LegacyOutputIterator*std::declval<OutputIt>() = *std::declval<InputIt>()
must be validInputIt
does not meet the requirements of LegacyForwardIterator, then OutputIt
must meet the requirements of LegacyForwardIterator and *std::declval<OutputIt>() == *std::declval<InputIt>()
(or p(*std::declval<OutputIt>(), *std::declval<InputIt>())
for predicate version) must be valid and convertible to bool
*std::declval<InputIt>() == *std::declval<InputIt>()
(or p(*std::declval<InputIt>(), *std::declval<InputIt>())
for predicate version) must be valid and convertible to bool