Skip to content

Consistently use math mode for index notation and ellipses in INVOKE expressions #1564

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions source/threads.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5038,7 +5038,7 @@
\begin{itemdescr}
\pnum
\requires
\tcode{\placeholdernc{INVOKE}<R>(f, t1, t2, ..., tN)}, where \tcode{t1, t2, ..., tN} are values
\tcode{\placeholdernc{INVOKE}<R>(f, t$_1$, t$_2$, $\dotsc$, t$_N$)}, where \tcode{t$_1$, t$_2$, $\dotsc$, t$_N$} are values
of the corresponding types in \tcode{ArgTypes...}, shall be a valid expression. Invoking
a copy of \tcode{f} shall behave the same as invoking \tcode{f}.

Expand Down Expand Up @@ -5160,10 +5160,10 @@

\begin{itemdescr}
\pnum
\effects As if by \tcode{\placeholdernc{INVOKE}<R>(f, t1, t2, ..., tN)},
\effects As if by \tcode{\placeholdernc{INVOKE}<R>(f, t$_1$, t$_2$, $\dotsc$, t$_N$)},
where \tcode{f} is the
stored task of \tcode{*this} and
\tcode{t1, t2, ..., tN} are the values in \tcode{args...}. If the task returns normally,
\tcode{t$_1$, t$_2$, $\dotsc$, t$_N$} are the values in \tcode{args...}. If the task returns normally,
the return value is stored as the asynchronous result in the shared state of
\tcode{*this}, otherwise the exception thrown by the task is stored. The
shared state of \tcode{*this} is made ready, and any threads blocked in a
Expand All @@ -5190,9 +5190,9 @@

\begin{itemdescr}
\pnum
\effects As if by \tcode{\placeholdernc{INVOKE}<R>(f, t1, t2, ..., tN)},
\effects As if by \tcode{\placeholdernc{INVOKE}<R>(f, t$_1$, t$_2$, $\dotsc$, t$_N$)},
where \tcode{f} is the stored task and
\tcode{t1, t2, ..., tN} are the values in \tcode{args...}. If the task returns normally,
\tcode{t$_1$, t$_2$, $\dotsc$, t$_N$} are the values in \tcode{args...}. If the task returns normally,
the return value is stored as the asynchronous result in the shared state of
\tcode{*this}, otherwise the exception thrown by the task is stored. In either
case, this shall be done without making that state ready~(\ref{futures.state}) immediately. Schedules
Expand Down
62 changes: 31 additions & 31 deletions source/utilities.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13094,42 +13094,42 @@

\pnum
\indexlibrary{invoke@\tcode{\placeholder{INVOKE}}}%
Define \tcode{\placeholdernc{INVOKE}(f, t1, t2, ..., tN)} as follows:
Define \tcode{\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$)} as follows:

\begin{itemize}
\item \tcode{(t1.*f)(t2, ..., tN)} when \tcode{f} is a pointer to a
\item \tcode{(t$_1$.*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a
member function of a class \tcode{T}
and \tcode{is_base_of_v<T, decay_t<decltype(t1)>>} is \tcode{true};
and \tcode{is_base_of_v<T, decay_t<decltype(t$_1$)>>} is \tcode{true};

\item \tcode{(t1.get().*f)(t2, ..., tN)} when \tcode{f} is a pointer to a
\item \tcode{(t$_1$.get().*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a
member function of a class \tcode{T}
and \tcode{decay_t<decltype(t1)>} is a specialization of \tcode{reference_wrapper};
and \tcode{decay_t<decltype(t$_1$)>} is a specialization of \tcode{reference_wrapper};

\item \tcode{((*t1).*f)(t2, ..., tN)} when \tcode{f} is a pointer to a
\item \tcode{((*t$_1$).*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a
member function of a class \tcode{T}
and \tcode{t1} does not satisfy the previous two items;
and \tcode{t$_1$} does not satisfy the previous two items;

\item \tcode{t1.*f} when \tcode{N == 1} and \tcode{f} is a pointer to
\item \tcode{t$_1$.*f} when \tcode{N == 1} and \tcode{f} is a pointer to
data member of a class \tcode{T}
and \tcode{is_base_of_v<T, decay_t<decltype(t1)>>} is \tcode{true};
and \tcode{is_base_of_v<T, decay_t<decltype(t$_1$)>>} is \tcode{true};

\item \tcode{t1.get().*f} when \tcode{N == 1} and \tcode{f} is a pointer to
\item \tcode{t$_1$.get().*f} when \tcode{N == 1} and \tcode{f} is a pointer to
data member of a class \tcode{T}
and \tcode{decay_t<decltype(t1)>} is a specialization of \tcode{reference_wrapper};
and \tcode{decay_t<decltype(t$_1$)>} is a specialization of \tcode{reference_wrapper};

\item \tcode{(*t1).*f} when \tcode{N == 1} and \tcode{f} is a pointer to
\item \tcode{(*t$_1$).*f} when \tcode{N == 1} and \tcode{f} is a pointer to
data member of a class \tcode{T}
and \tcode{t1} does not satisfy the previous two items;
and \tcode{t$_1$} does not satisfy the previous two items;

\item \tcode{f(t1, t2, ..., tN)} in all other cases.
\item \tcode{f(t$_1$, t$_2$, $\dotsc$, t$_N$)} in all other cases.
\end{itemize}

\pnum
\indexlibrary{invoke@\tcode{\placeholder{INVOKE}}}%
Define \tcode{\placeholdernc{INVOKE}<R>(f, t1, t2, ..., tN)} as
\tcode{static_cast<void>(\placeholdernc{INVOKE}(f, t1, t2, ..., tN))}
Define \tcode{\placeholdernc{INVOKE}<R>(f, t$_1$, t$_2$, $\dotsc$, t$_N$)} as
\tcode{static_cast<void>(\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$))}
if \tcode{R} is \cv{}~\tcode{void}, otherwise
\tcode{\placeholdernc{INVOKE}(f, t1, t2, ..., tN)} implicitly converted
\tcode{\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$)} implicitly converted
to \tcode{R}.

\pnum
Expand Down Expand Up @@ -14274,22 +14274,22 @@
\requires
\tcode{is_constructible_v<FD, F>} shall be \tcode{true}. For each $\tcode{T}_i$
in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$>} shall be \tcode{true}.
\tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, \ldots,
\tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$,
$\tcode{w}_N$)}~(\ref{func.require}) shall be a valid expression for some
values $\tcode{w}_1$, $\tcode{w}_2$, \ldots, $\tcode{w}_N$, where
values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where
$N$ has the value \tcode{sizeof...(bound_args)}.
The cv-qualifiers \cv{} of the call wrapper \tcode{g},
as specified below, shall be neither \tcode{volatile} nor \tcode{const volatile}.

\pnum\returns
A forwarding call wrapper \tcode{g}~(\ref{func.require}).
The effect of \tcode{g($\tcode{u}_1$, $\tcode{u}_2$, \ldots, $\tcode{u}_M$)} shall
The effect of \tcode{g($\tcode{u}_1$, $\tcode{u}_2$, $\dotsc$, $\tcode{u}_M$)} shall
be
\begin{codeblock}
@\placeholdernc{INVOKE}@(fd, std::forward<@$\tcode{V}_1$@>(@$\tcode{v}_1$@), std::forward<@$\tcode{V}_2$@>(@$\tcode{v}_2$@), @\ldots @, std::forward<@$\tcode{V}_N$@>(@$\tcode{v}_N$@))
@\placeholdernc{INVOKE}@(fd, std::forward<@$\tcode{V}_1$@>(@$\tcode{v}_1$@), std::forward<@$\tcode{V}_2$@>(@$\tcode{v}_2$@), @$\dotsc$@, std::forward<@$\tcode{V}_N$@>(@$\tcode{v}_N$@))
\end{codeblock}
where the values and types of the bound
arguments $\tcode{v}_1$, $\tcode{v}_2$, \ldots, $\tcode{v}_N$ are determined as specified below.
arguments $\tcode{v}_1$, $\tcode{v}_2$, $\dotsc$, $\tcode{v}_N$ are determined as specified below.
The copy constructor and move constructor of the forwarding call wrapper shall throw an
exception if and only if the corresponding constructor of \tcode{FD} or of any of the types
$\tcode{TD}_i$ throws an exception.
Expand All @@ -14316,9 +14316,9 @@
\requires
\tcode{is_constructible_v<FD, F>} shall be \tcode{true}. For each $\tcode{T}_i$
in \tcode{BoundArgs}, \tcode{is_con\-structible_v<$\tcode{TD}_i$, $\tcode{T}_i$>} shall be \tcode{true}.
\tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, \ldots, $\tcode{w}_N$)} shall be a valid
\tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)} shall be a valid
expression for some
values $\tcode{w}_1$, $\tcode{w}_2$, \ldots, $\tcode{w}_N$, where
values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$, where
$N$ has the value \tcode{sizeof...(bound_args)}.
The cv-qualifiers \cv{} of the call wrapper \tcode{g},
as specified below, shall be neither \tcode{volatile} nor \tcode{const volatile}.
Expand All @@ -14327,12 +14327,12 @@
\returns
A forwarding call wrapper \tcode{g}~(\ref{func.require}).
The effect of
\tcode{g($\tcode{u}_1$, $\tcode{u}_2$, \ldots, $\tcode{u}_M$)} shall be
\tcode{g($\tcode{u}_1$, $\tcode{u}_2$, $\dotsc$, $\tcode{u}_M$)} shall be
\begin{codeblock}
@\placeholdernc{INVOKE}@<R>(fd, std::forward<@$\tcode{V}_1$@>(@$\tcode{v}_1$@), std::forward<@$\tcode{V}_2$@>(@$\tcode{v}_2$@), @\ldots @, std::forward<@$\tcode{V}_N$@>(@$\tcode{v}_N$@))
@\placeholdernc{INVOKE}@<R>(fd, std::forward<@$\tcode{V}_1$@>(@$\tcode{v}_1$@), std::forward<@$\tcode{V}_2$@>(@$\tcode{v}_2$@), @$\dotsc$@, std::forward<@$\tcode{V}_N$@>(@$\tcode{v}_N$@))
\end{codeblock}
where the values and types of the bound
arguments $\tcode{v}_1$, $\tcode{v}_2$, \ldots, $\tcode{v}_N$ are determined as specified below.
arguments $\tcode{v}_1$, $\tcode{v}_2$, $\dotsc$, $\tcode{v}_N$ are determined as specified below.
The copy constructor and move constructor of the forwarding call wrapper shall throw an
exception if and only if the corresponding constructor of \tcode{FD} or of any of the types
$\tcode{TD}_i$ throws an exception.
Expand All @@ -14350,8 +14350,8 @@

\pnum
\indextext{bound arguments}%
The values of the \techterm{bound arguments} $\tcode{v}_1$, $\tcode{v}_2$, \ldots, $\tcode{v}_N$ and their
corresponding types $\tcode{V}_1$, $\tcode{V}_2$, \ldots, $\tcode{V}_N$ depend on the
The values of the \techterm{bound arguments} $\tcode{v}_1$, $\tcode{v}_2$, $\dotsc$, $\tcode{v}_N$ and their
corresponding types $\tcode{V}_1$, $\tcode{V}_2$, $\dotsc$, $\tcode{V}_N$ depend on the
types $\tcode{TD}_i$ derived from
the call to \tcode{bind} and the
cv-qualifiers \cv{} of the call wrapper \tcode{g} as follows:
Expand Down Expand Up @@ -14421,8 +14421,8 @@
\begin{itemdescr}
\pnum
\returns A simple call wrapper~(\ref{func.def}) \tcode{fn}
such that the expression \tcode{fn(t, a2, ..., aN)} is equivalent
to \tcode{\placeholdernc{INVOKE}(pm, t, a2, ..., aN)}~(\ref{func.require}).
such that the expression \tcode{fn(t, a$_2$, $\dotsc$, a$_N$)} is equivalent
to \tcode{\placeholdernc{INVOKE}(pm, t, a$_2$, $\dotsc$, a$_N$)}~(\ref{func.require}).
\end{itemdescr}
\indextext{function object!\idxcode{mem_fn}|)}

Expand Down