public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/102928] New: Template argument deduction when mixing variadic template with C-style variadic function
@ 2021-10-25 12:29 cerrigno at gmail dot com
2021-11-06 22:10 ` [Bug c++/102928] " pinskia at gcc dot gnu.org
0 siblings, 1 reply; 2+ messages in thread
From: cerrigno at gmail dot com @ 2021-10-25 12:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102928
Bug ID: 102928
Summary: Template argument deduction when mixing variadic
template with C-style variadic function
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: cerrigno at gmail dot com
Target Milestone: ---
GCC fails to deduce template arguments when mixing variadic template with
C-style variadic function.
This code compiles fine on clang, MSVC and ICC.
```
template <typename... Args>
constexpr auto foo(Args&& ...args, ...) noexcept {
return sizeof...(args);
}
constexpr auto bar() noexcept {
return foo<int>(1, 2);
}
static_assert(bar() == 2, "");
```
but on GCC bar() returns 1.
Even if not so clear on the standard, the correct output should be 2. More
information can be found on this answer on StackOverflow:
https://stackoverflow.com/a/69700603/3287591
See also this sandbox on Compiler Explorer: https://godbolt.org/z/e5v74n6fE
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug c++/102928] Template argument deduction when mixing variadic template with C-style variadic function
2021-10-25 12:29 [Bug c++/102928] New: Template argument deduction when mixing variadic template with C-style variadic function cerrigno at gmail dot com
@ 2021-11-06 22:10 ` pinskia at gcc dot gnu.org
0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-11-06 22:10 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102928
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-11-06
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
temp.deduct.call
For a function parameter pack that occurs at the end of the
parameter-declaration-list,
deduction is performed for each remaining argument of the call, taking the type
P of the declarator-id of the
function parameter pack as the corresponding function template parameter type.
Each deduction deduces
template arguments for subsequent positions in the template parameter packs
expanded by the function
parameter pack.
parameter-declaration-list does not include the ... variadic arguments part.
So Confirmed.
As far as I read in the standard, the template variadic deduction should be
greedy (deduction is performed for each remaining argument of the call).
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-11-06 22:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-25 12:29 [Bug c++/102928] New: Template argument deduction when mixing variadic template with C-style variadic function cerrigno at gmail dot com
2021-11-06 22:10 ` [Bug c++/102928] " pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).