[Bug c++/91247] New: Variadic template expansion - Mistmatch argument pack length
mariogalindoq at hotmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Jul 24 09:12:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91247
Bug ID: 91247
Summary: Variadic template expansion - Mistmatch argument pack
length
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mariogalindoq at hotmail dot com
Target Milestone: ---
Created attachment 46624
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46624&action=edit
Full program that do not compile in gcc due to this bug.
When expanding the pack of a variadic template, the compiler adds an extra
spirous type.
The program can be executed here:
https://wandbox.org/permlink/O1mixn6gm1XWH6Hr
The following is a complete program example that do not compile in gcc but
compile in clang, for instance:
#include <iostream>
template<typename... Lambda_types>
struct S : Lambda_types...
{
// The following only works with clang. In gcc do not compile, this a bug.
template<typename... T>
S(T&&... lambda_args) : Lambda_types{std::forward<T>(lambda_args)}... {} //
Mistmach argument pack length !!!
using Lambda_types::operator()...;
};
template<typename... Lambda_types>
S(Lambda_types...) -> S<Lambda_types...>;
int main()
{
auto l1 = []() {return 4;};
auto l2 = [](int i) {return i*11;};
S comb{l1,l2};
std::cout << comb() << '\n';
std::cout << comb(5) << '\n';
}
// This bug can be relationed with bug id 88580
More information about the Gcc-bugs
mailing list