[Bug c++/86859] New: error: expansion pattern contains no parameter pack when a pack from introduced in a capture is used in decltype
gufideg at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Aug 5 05:11:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86859
Bug ID: 86859
Summary: error: expansion pattern contains no parameter pack
when a pack from introduced in a capture is used in
decltype
Product: gcc
Version: 8.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gufideg at gmail dot com
Target Milestone: ---
Here's the code snippet that triggers the bug:
int main() {
auto builder = [](auto b) {
return [b](auto... treeArgs) {
return [b, treeArgs...]()
-> decltype(b(treeArgs...)) {
return b(treeArgs...);
};
};
};
builder([]{});
}
GCC outputs a quite weird error message:
In instantiation of 'main()::<lambda(auto:1)> [with auto:1 =
main()::<lambda()>]':
required from here
error: expansion pattern '#'nontype_argument_pack' not supported by
dump_expr#<expression error>' contains no parameter packs
-> decltype(b(treeArgs...)) {
~^~~~~~~~~~~~~
This code compiles fine in clang.
Changing the `decltype(<expr>)` for a `decltype(auto)` work around the bug:
int main() {
auto builder = [](auto b) {
return [b](auto... treeArgs) {
return [b, treeArgs...]()
-> decltype(auto) {
return b(treeArgs...);
};
};
};
builder([]{});
}
More information about the Gcc-bugs
mailing list