C++ Logo


Advanced search

Subject: Re: Contradiction in the description of the pack expansion
From: Brian Bi (bbi5291_at_[hidden])
Date: 2019-08-16 09:52:09

On Fri, Aug 16, 2019 at 9:05 AM Vladimir Grigoriev via Std-Discussion <
std-discussion_at_[hidden]> wrote:

> In the section 13.6.3 Variadic templates there is written
> 3 An init-capture pack is a lambda capture that introduces an init-capture
> for each of the elements in the pack expansion of its initializer
> template <typename... Args>
> void foo(Args... args) {
> [...xs=args]{
> bar(xs...); // xs is an init-capture pack
> and then
> 5 A pack expansion consists of a pattern and an ellipsis,...
> However we see that in the example above the pack expansion does not use
> ellipsis. And inside a sizeof... expression there is also ellipsis are not
> used.
Which pack expansion in this example does not use an ellipsis?
There are two pack expansions here: `...xs=args` where the pattern is
`xs=args`, and also in `bar(xs...)`, `xs...` is a pack expansion. Both use
an ellipsis.
The `sizeof...` operator also contains an ellipsis. It just happens that
the ellipsis is not adjacent to the pack.

> So in my opinion the paragraph 5 can be rewritten. Otherwise it confuses
> readers.
> With best regards,
> (Vlad from Moscow)
> You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or
> http://ru.stackoverflow.com
> --
> Std-Discussion mailing list
> Std-Discussion_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

*Brian Bi*

STD-DISCUSSION list run by std-discussion-owner@lists.isocpp.org

Older Archives on Google Groups