diff --git a/source/exec.tex b/source/exec.tex index 0403d80807..87a7166747 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -1701,7 +1701,7 @@ return @\exposid{impls-for}@::@\exposid{get-attrs}@(data, child...); } - template<@\exposconcept{decays-to}@<@\exposid{basic-sender}@> Self, receiver Rcvr> + template<@\exposconcept{decays-to}@<@\exposid{basic-sender}@> Self, @\libconcept{receiver}@ Rcvr> auto connect(this Self&& self, Rcvr rcvr) noexcept(@\seebelow@) -> @\exposid{basic-operation}@ { return {std::forward(self), std::move(rcvr)}; @@ -1735,7 +1735,7 @@ \begin{codeblock} is_nothrow_move_constructible_v && @\exposconcept{nothrow-callable}@>::@\exposid{get-state}@), Sndr, Rcvr&> && -(same_as<@\exposid{state-type}@, @\exposid{get-state-result}@> || +(@\libconcept{same_as}@<@\exposid{state-type}@, @\exposid{get-state-result}@> || is_nothrow_constructible_v<@\exposid{state-type}@, @\exposid{get-state-result}@>) \end{codeblock} where \exposid{get-state-result} is @@ -1931,7 +1931,7 @@ template concept @\defexposconcept{is-sender}@ = // \expos - derived_from; + @\libconcept{derived_from}@; template concept @\defexposconcept{enable-sender}@ = // \expos @@ -5022,7 +5022,7 @@ \pnum \begin{example} \begin{codeblock} -template +template<@\libconcept{sender}@ Sndr> sender auto parameterize_work(Sndr sndr) { // Make an environment such that \tcode{get_allocator(env)} returns a reference to a copy of \tcode{my_alloc\{\}}. auto e = prop(get_allocator, my_alloc{}); @@ -5075,7 +5075,7 @@ \pnum \begin{example} \begin{codeblock} -template +template<@\libconcept{sender}@ Sndr> sender auto parameterize_work(Sndr sndr) { // Make an environment such that: // \tcode{get_allocator(env)} returns a reference to a copy of \tcode{my_alloc\{\}} diff --git a/source/numerics.tex b/source/numerics.tex index b91b8a06e1..7b8abbf65d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -16151,8 +16151,8 @@ template concept @\defexposconceptnc{constexpr-wrapper-like}@ = // \expos - convertible_to && - equality_comparable_with && + @\libconcept{convertible_to}@ && + @\libconcept{equality_comparable_with}@ && bool_constant::value && bool_constant(T()) == T::value>::value; @@ -16162,8 +16162,8 @@ template concept @\defexposconceptnc{simd-floating-point}@ = // \expos - same_as> && - is_default_constructible_v && floating_point; + @\libconcept{same_as}@> && + is_default_constructible_v && @\libconcept{floating_point}@; template concept @\defexposconceptnc{math-floating-point}@ = // \expos @@ -16311,7 +16311,7 @@ template concept @\defexposconcept{reduction-binary-operation}@ = requires (const BinaryOperation binary_op, const simd v) { - { binary_op(v, v) } -> same_as>; + { binary_op(v, v) } -> @\libconcept{same_as}@>; }; \end{itemdecl} @@ -16437,93 +16437,93 @@ using simd_mask = basic_simd_mask>; // \ref{simd.loadstore}, \tcode{basic_simd} load and store functions - template - requires ranges::sized_range + template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_unchecked_load(R&& r, simd_flags f = {}); - template - requires ranges::sized_range + template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_unchecked_load(R&& r, const typename V::mask_type& k, simd_flags f = {}); - template + template constexpr V simd_unchecked_load(I first, iter_difference_t n, simd_flags f = {}); - template + template constexpr V simd_unchecked_load(I first, iter_difference_t n, const typename V::mask_type& k, simd_flags f = {}); - template S, class... Flags> + template S, class... Flags> constexpr V simd_unchecked_load(I first, S last, simd_flags f = {}); - template S, class... Flags> + template S, class... Flags> constexpr V simd_unchecked_load(I first, S last, const typename V::mask_type& k, simd_flags f = {}); - template - requires ranges::sized_range + template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_partial_load(R&& r, simd_flags f = {}); - template - requires ranges::sized_range + template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_partial_load(R&& r, const typename V::mask_type& k, simd_flags f = {}); template constexpr V simd_partial_load(I first, iter_difference_t n, simd_flags f = {}); - template + template constexpr V simd_partial_load(I first, iter_difference_t n, const typename V::mask_type& k, simd_flags f = {}); - template S, class... Flags> + template S, class... Flags> constexpr V simd_partial_load(I first, S last, simd_flags f = {}); - template S, class... Flags> + template S, class... Flags> constexpr V simd_partial_load(I first, S last, const typename V::mask_type& k, simd_flags f = {}); - template - requires ranges::sized_range && indirectly_writable, T> + template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_unchecked_store(const basic_simd& v, R&& r, simd_flags f = {}); - template - requires ranges::sized_range && indirectly_writable, T> + template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_unchecked_store(const basic_simd& v, R&& r, const typename basic_simd::mask_type& mask, simd_flags f = {}); - template - requires indirectly_writable + template + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, iter_difference_t n, simd_flags f = {}); - template - requires indirectly_writable + template + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, iter_difference_t n, const typename basic_simd::mask_type& mask, simd_flags f = {}); - template S, class... Flags> - requires indirectly_writable + template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, S last, simd_flags f = {}); - template S, class... Flags> - requires indirectly_writable + template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, S last, const typename basic_simd::mask_type& mask, simd_flags f = {}); - template - requires ranges::sized_range && indirectly_writable, T> + template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_partial_store(const basic_simd& v, R&& r, simd_flags f = {}); - template - requires ranges::sized_range && indirectly_writable, T> + template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_partial_store(const basic_simd& v, R&& r, const typename basic_simd::mask_type& mask, simd_flags f = {}); - template - requires indirectly_writable + template + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store( const basic_simd& v, I first, iter_difference_t n, simd_flags f = {}); - template - requires indirectly_writable + template + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store( const basic_simd& v, I first, iter_difference_t n, const typename basic_simd::mask_type& mask, simd_flags f = {}); - template S, class... Flags> - requires indirectly_writable + template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, S last, simd_flags f = {}); - template S, class... Flags> - requires indirectly_writable + template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, S last, const typename basic_simd::mask_type& mask, simd_flags f = {}); @@ -16557,12 +16557,12 @@ template constexpr @\exposid{simd-size-type}@ reduce_max_index(const basic_simd_mask&); - constexpr bool all_of(same_as auto) noexcept; - constexpr bool any_of(same_as auto) noexcept; - constexpr bool none_of(same_as auto) noexcept; - constexpr @\exposid{simd-size-type}@ reduce_count(same_as auto) noexcept; - constexpr @\exposid{simd-size-type}@ reduce_min_index(same_as auto); - constexpr @\exposid{simd-size-type}@ reduce_max_index(same_as auto); + constexpr bool all_of(@\libconcept{same_as}@ auto) noexcept; + constexpr bool any_of(@\libconcept{same_as}@ auto) noexcept; + constexpr bool none_of(@\libconcept{same_as}@ auto) noexcept; + constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@ auto) noexcept; + constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@ auto); + constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@ auto); // \ref{simd.reductions}, \tcode{basic_simd} reductions template> @@ -16644,7 +16644,7 @@ constexpr @\exposid{deduced-simd-t}@ scalbln( const V& x, const rebind_simd_t>& n); template<@\exposconcept{math-floating-point}@ V> constexpr @\exposid{deduced-simd-t}@ cbrt(const V& x); - template + template<@\libconcept{signed_integral}@ T, class Abi> constexpr basic_simd abs(const basic_simd& j); template<@\exposconcept{math-floating-point}@ V> constexpr @\exposid{deduced-simd-t}@ abs(const V& j); template<@\exposconcept{math-floating-point}@ V> constexpr @\exposid{deduced-simd-t}@ fabs(const V& x); @@ -17670,21 +17670,21 @@ \rSec3[simd.loadstore]{\tcode{basic_simd} load and store functions} \begin{itemdecl} -template - requires ranges::sized_range +template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_unchecked_load(R&& r, simd_flags f = {}); -template - requires ranges::sized_range +template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_unchecked_load(R&& r, const typename V::mask_type& mask, simd_flags f = {}); -template +template constexpr V simd_unchecked_load(I first, iter_difference_t n, simd_flags f = {}); -template +template constexpr V simd_unchecked_load(I first, iter_difference_t n, const typename V::mask_type& mask, simd_flags f = {}); -template S, class... Flags> +template S, class... Flags> constexpr V simd_unchecked_load(I first, S last, simd_flags f = {}); -template S, class... Flags> +template S, class... Flags> constexpr V simd_unchecked_load(I first, S last, const typename V::mask_type& mask, simd_flags f = {}); \end{itemdecl} @@ -17731,21 +17731,21 @@ \end{itemdescr} \begin{itemdecl} -template - requires ranges::sized_range +template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_partial_load(R&& r, simd_flags f = {}); -template - requires ranges::sized_range +template + requires ranges::@\libconcept{sized_range}@ constexpr V simd_partial_load(R&& r, const typename V::mask_type& mask, simd_flags f = {}); -template +template constexpr V simd_partial_load(I first, iter_difference_t n, simd_flags f = {}); -template +template constexpr V simd_partial_load(I first, iter_difference_t n, const typename V::mask_type& mask, simd_flags f = {}); -template S, class... Flags> +template S, class... Flags> constexpr V simd_partial_load(I first, S last, simd_flags f = {}); -template S, class... Flags> +template S, class... Flags> constexpr V simd_partial_load(I first, S last, const typename V::mask_type& mask, simd_flags f = {}); \end{itemdecl} @@ -17815,28 +17815,28 @@ \end{itemdescr} \begin{itemdecl} -template - requires ranges::sized_range && indirectly_writable, T> +template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_unchecked_store(const basic_simd& v, R&& r, simd_flags f = {}); -template - requires ranges::sized_range && indirectly_writable, T> +template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_unchecked_store(const basic_simd& v, R&& r, const typename basic_simd::mask_type& mask, simd_flags f = {}); -template - requires indirectly_writable +template + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, iter_difference_t n, simd_flags f = {}); -template - requires indirectly_writable +template + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, iter_difference_t n, const typename basic_simd::mask_type& mask, simd_flags f = {}); -template S, class... Flags> - requires indirectly_writable +template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, S last, simd_flags f = {}); -template S, class... Flags> - requires indirectly_writable +template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_unchecked_store(const basic_simd& v, I first, S last, const typename basic_simd::mask_type& mask, simd_flags f = {}); \end{itemdecl} @@ -17881,28 +17881,28 @@ \end{itemdescr} \begin{itemdecl} -template - requires ranges::sized_range && indirectly_writable, T> +template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_partial_store(const basic_simd& v, R&& r, simd_flags f = {}); -template - requires ranges::sized_range && indirectly_writable, T> +template + requires ranges::@\libconcept{sized_range}@ && @\libconcept{indirectly_writable}@, T> constexpr void simd_partial_store(const basic_simd& v, R&& r, const typename basic_simd::mask_type& mask, simd_flags f = {}); -template - requires indirectly_writable +template + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, iter_difference_t n, simd_flags f = {}); -template - requires indirectly_writable +template + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, iter_difference_t n, const typename basic_simd::mask_type& mask, simd_flags f = {}); -template S, class... Flags> - requires indirectly_writable +template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, S last, simd_flags f = {}); -template S, class... Flags> - requires indirectly_writable +template S, class... Flags> + requires @\libconcept{indirectly_writable}@ constexpr void simd_partial_store(const basic_simd& v, I first, S last, const typename basic_simd::mask_type& mask, simd_flags f = {}); \end{itemdecl} @@ -18161,7 +18161,7 @@ template<@\exposconcept{math-floating-point}@ V> constexpr @\exposid{deduced-simd-t}@ scalbln(const V& x, const rebind_simd_t>& n); -template +template<@\libconcept{signed_integral}@ T, class Abi> constexpr basic_simd abs(const basic_simd& j); template<@\exposconcept{math-floating-point}@ V> constexpr @\exposid{deduced-simd-t}@ abs(const V& j); @@ -18546,7 +18546,7 @@ friend constexpr basic_simd_mask @\exposid{simd-select-impl}@( // \expos const basic_simd_mask&, const basic_simd_mask&, const basic_simd_mask&) noexcept; friend constexpr basic_simd_mask @\exposid{simd-select-impl}@( // \expos - const basic_simd_mask&, same_as auto, same_as auto) noexcept; + const basic_simd_mask&, @\libconcept{same_as}@ auto, @\libconcept{same_as}@ auto) noexcept; template friend constexpr simd<@\seebelow@, size()> @\exposid{simd-select-impl}@(const basic_simd_mask&, const T0&, const T1&) noexcept; // \expos @@ -18799,7 +18799,7 @@ \begin{itemdecl} friend constexpr basic_simd_mask -@\exposid{simd-select-impl}@(const basic_simd_mask& mask, same_as auto a, same_as auto b) noexcept; +@\exposid{simd-select-impl}@(const basic_simd_mask& mask, @\libconcept{same_as}@ auto a, @\libconcept{same_as}@ auto b) noexcept; \end{itemdecl} \begin{itemdescr} @@ -18912,9 +18912,9 @@ \end{itemdescr} \begin{itemdecl} -constexpr bool all_of(same_as auto x) noexcept; -constexpr bool any_of(same_as auto x) noexcept; -constexpr @\exposid{simd-size-type}@ reduce_count(same_as auto x) noexcept; +constexpr bool all_of(@\libconcept{same_as}@ auto x) noexcept; +constexpr bool any_of(@\libconcept{same_as}@ auto x) noexcept; +constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@ auto x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -18924,7 +18924,7 @@ \end{itemdescr} \begin{itemdecl} -constexpr bool none_of(same_as auto x) noexcept; +constexpr bool none_of(@\libconcept{same_as}@ auto x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -18934,8 +18934,8 @@ \end{itemdescr} \begin{itemdecl} -constexpr @\exposid{simd-size-type}@ reduce_min_index(same_as auto x); -constexpr @\exposid{simd-size-type}@ reduce_max_index(same_as auto x); +constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@ auto x); +constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@ auto x); \end{itemdecl} \begin{itemdescr} diff --git a/tools/check-output.sh b/tools/check-output.sh index af2897a1bc..5a61d41830 100755 --- a/tools/check-output.sh +++ b/tools/check-output.sh @@ -64,13 +64,21 @@ cat std-conceptindex.ind | # Find undecorated concept names in code blocks patt="`cat std-conceptindex.ind | sed 's/.hyperindexformat/\nhyperindexformat/;s/.hyperpage/\nhyperpage/' | - sed -n 's/^ .item.*{\([-a-z_]*\)}.*$/\1/p'`" + sed -n 's/^ .item.*{\([-a-z_]*\)}.*$/\1/p;s/^ .item.*frenchspacing \([a-z_]*\)}.*$/\1/p'`" patt="`echo $patt | sed 's/ /\\\\|/g'`" # $patt contains all concept names, separated by \| to use as a sed regex for f in *.tex; do - sed -n 's,//.*$,,;s/%.*$//;s/"[^"]*"/""/;/begin{codeblock\(tu\)\?}/,/end{codeblock\(tu\)\?}/{/[^-_{a-z\]\('"$patt"'\)[^-_}a-z();]/{=;p;};}' $f | + # handle codeblock + sed -n 's,//.*$,,;s/%.*$//;s/"[^"]*"/""/;/begin{codeblock\(tu\)\?}/,/end{codeblock\(tu\)\?}/{/[^-_a-z\]\('"$patt"'\)[^-_}a-z0-9();,]/{=;p;};}' $f | + # prefix output with filename and line + sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/" | + grep -v "@.seebelow" | + sed "s/\$/ -- concept name without markup/" | + fail || failed=1 + # handle itemdecl + sed -n 's,//.*$,,;s/%.*$//;s/"[^"]*"/""/;/begin{itemdecl}/,/end{itemdecl}/{/[^-_a-z]\('"$patt"'\)[^-_a-z();,]/{/concept{[a-z_-]*}/d;=;p;};}' $f | # prefix output with filename and line sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/" | grep -v "@.seebelow" |