File tree Expand file tree Collapse file tree 4 files changed +64
-1
lines changed Expand file tree Collapse file tree 4 files changed +64
-1
lines changed Original file line number Diff line number Diff line change 1084
1084
\item %
1085
1085
when a call to a \tcode {wait()}, \tcode {wait_until()}, or \tcode {wait_for()}
1086
1086
function on a condition variable\iref {thread.condition.condvar,thread.condition.condvarany }
1087
- fails to meet a postcondition.
1087
+ fails to meet a postcondition, or
1088
+
1089
+ \item %
1090
+ when a callback invocation exits via an exception
1091
+ when requesting stop on
1092
+ a \tcode {std::stop_source} or
1093
+ a \tcode {std::in\- place_stop_source}\iref {stopsource.mem,stopsource.inplace.mem },
1094
+ or in the constructor of
1095
+ \tcode {std::stop_callback} or
1096
+ \tcode {std::inplace_stop_callback}\iref {stopcallback.cons,stopcallback.inplace.cons }
1097
+ when a callback invocation exits via an exception, or
1098
+
1099
+ \item %
1100
+ when a \tcode {run_loop} object is destroyed
1101
+ that is still in the \tcode {running} state\iref {exec.run.loop }, or
1102
+
1103
+ \item %
1104
+ when \tcode {unhandled_stopped} is called on
1105
+ a \tcode {with_awaitable_senders<T>} object\iref {exec.with.awaitable.senders }
1106
+ whose continuation is not a handle to a coroutine
1107
+ whose promise type has an \tcode {unhandled_stopped} member function.
1088
1108
1089
1109
\end {itemize }
1090
1110
Original file line number Diff line number Diff line change 525
525
}
526
526
\end {codeblock }
527
527
528
+ \pnum
529
+ An object \tcode {dst} is said to be \defn {decay-copied from}
530
+ a subexpression \tcode {src}
531
+ if the type of \tcode {dst} is
532
+ \begin {codeblock }
533
+ decay_t<decltype((src))>
534
+ \end {codeblock } and \tcode {dst} is copy-initialized from \tcode {src}.
535
+
528
536
\rSec 3[type.descriptions]{Type descriptions}
529
537
530
538
\rSec 4[type.descriptions.general]{General}
2850
2858
\end {codeblock }
2851
2859
\end {example }
2852
2860
2861
+ \pnum
2862
+ The following exposition-only concept defines
2863
+ the minimal requirements on an Allocator type.
2864
+ \begin {codeblock }
2865
+ template<class Alloc>
2866
+ concept @\defexposconcept {simple-allocator}@ =
2867
+ requires(Alloc alloc, size_t n) {
2868
+ { *alloc.allocate(n) } -> @\libconcept {same_as}@<typename Alloc::value_type&>;
2869
+ { alloc.deallocate(alloc.allocate(n), n) };
2870
+ } &&
2871
+ @\libconcept {copy_constructible}@<Alloc> &&
2872
+ @\libconcept {equality_comparable}@<Alloc>;
2873
+ \end {codeblock }
2874
+ A type \tcode {Alloc} models \exposconcept {simple-allocator}
2875
+ if it meets the requirements of \ref {allocator.requirements.general }.
2876
+
2853
2877
\rSec 4[allocator.requirements.completeness]{Allocator completeness requirements}
2854
2878
2855
2879
\pnum
Original file line number Diff line number Diff line change 765
765
#define @\defnlibxname {cpp_lib_saturation_arithmetic}@ 202311L // also in \libheader {numeric}
766
766
#define @\defnlibxname {cpp_lib_scoped_lock}@ 201703L // also in \libheader {mutex}
767
767
#define @\defnlibxname {cpp_lib_semaphore}@ 201907L // also in \libheader {semaphore}
768
+ #define @\defnlibxname {cpp_lib_senders}@ 202406L // also in \libheader {execution}
768
769
#define @\defnlibxname {cpp_lib_shared_mutex}@ 201505L // also in \libheader {shared_mutex}
769
770
#define @\defnlibxname {cpp_lib_shared_ptr_arrays}@ 201707L // also in \libheader {memory}
770
771
#define @\defnlibxname {cpp_lib_shared_ptr_weak_type}@ 201606L // also in \libheader {memory}
Original file line number Diff line number Diff line change 10755
10755
struct greater_equal; // freestanding
10756
10756
struct less_equal; // freestanding
10757
10757
}
10758
+
10759
+ template<class Fn, class... Args>
10760
+ concept @\defexposconcept{callable}@ = // \expos
10761
+ requires (Fn&& fn, Args&&... args) {
10762
+ std::forward<Fn>(fn)(std::forward<Args>(args)...);
10763
+ };
10764
+ template<class Fn, class... Args>
10765
+ concept @\defexposconcept{nothrow-callable}@ = // \expos
10766
+ callable<Fn, Args...> &&
10767
+ requires (Fn&& fn, Args&&... args) {
10768
+ { std::forward<Fn>(fn)(std::forward<Args>(args)...) } noexcept;
10769
+ };
10770
+ // exposition only:
10771
+ template<class Fn, class... Args>
10772
+ using @\exposid{call-result-t}@ = decltype(declval<Fn>()(declval<Args>()...)); // \expos
10773
+
10774
+ template<const auto& T>
10775
+ using @\exposid{decayed-typeof}@ = decltype(auto(T)); // \expos
10758
10776
}
10759
10777
\end{codeblock}
10760
10778
You can’t perform that action at this time.
0 commit comments