Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
destroy_n.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/meta/trivial.h"
7#include "di/util/addressof.h"
9
10namespace di::container {
11namespace detail {
13 template<concepts::UninitInputIterator It>
15 constexpr auto operator()(It it, meta::IteratorSSizeType<It> n) const -> It {
17 container::advance(it, n);
18 return it;
19 } else {
20 for (; n != 0; --n) {
21 util::destroy_at(util::addressof(*it));
22 ++it;
23 }
24 return it;
25 }
26 }
27
28 template<concepts::UninitInputContainer Con>
30 constexpr auto operator()(Con&& container) const -> meta::BorrowedIterator<Con> {
32 }
33 };
34}
35
36constexpr inline auto destroy_n = detail::DestroyNFunction {};
37}
38
39namespace di {
41}
Definition operations.h:57
Definition sequence.h:13
Definition sequence.h:12
constexpr auto destroy_n
Definition destroy_n.h:36
constexpr auto end
Definition end.h:47
constexpr auto advance
Definition advance.h:62
constexpr auto begin
Definition begin.h:44
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
decltype(container::iterator_ssize_type(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorSSizeType
Definition iterator_ssize_type.h:8
constexpr auto destroy_at
Definition destroy_at.h:24
Definition zstring_parser.h:9