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

Reply via email to