[Bug c++/77731] New: Parameter pack expansion doesn't work when used to define argument list
michele.caini at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Sep 25 19:40:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77731
Bug ID: 77731
Summary: Parameter pack expansion doesn't work when used to
define argument list
Product: gcc
Version: 6.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: michele.caini at gmail dot com
Target Milestone: ---
I refer to there questions on SO:
*
http://stackoverflow.com/questions/39690166/can-i-expand-a-parameters-pack-and-define-an-arguments-list-with-it
*
http://stackoverflow.com/questions/39665300/gcc-vs-clang-variadic-template-and-pointers-to-member-methods
In particular, GCC fails to compile the following snippets, but it should work
according with [temp.variadic]:
// Snippet 1
template<typename... T>
struct S {
template<T... I>
void m() {}
};
int main() {
S<int, char> s;
s.m<0, 'c'>();
// This works, but it shouldn't instead
s.m<>();
}
// Snippet 2
struct S { void f() { } };
struct T { void f() { } };
template<typename... M>
struct U: M... {
template<void(M::*... F)(void)>
void g() { }
void f() {
g<&M::f...>();
}
};
int main() {
U<S, T> u;
u.f();
}
The same applies to GCC v7.
More information about the Gcc-bugs
mailing list