[Bug c++/59991] New: Recursive lambda capture in C++1y constexpr function template causes internal compiler error
pkeir at outlook dot com
gcc-bugzilla@gcc.gnu.org
Wed Jan 29 21:17:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59991
Bug ID: 59991
Summary: Recursive lambda capture in C++1y constexpr function
template causes internal compiler error
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pkeir at outlook dot com
Created attachment 31987
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31987&action=edit
The test case which produces the internal compiler error
The code below uses the C++1y feature of allowing declarations in constexpr
functions, but r should not be included in the lambda's capture list. There is
also an issue with excessive recursive template instantiation. In any case, the
code produces an internal compiler error starting with:
internal compiler error: in tsubst, at cp/pt.c:11350
auto f = [r,x]() { return r(x); };
The full output and test case is attached. This was run under Ubuntu 13.10.
// $ g++ --version
// g++ (GCC) 4.9.0 20131201 (experimental)
template <typename T>
constexpr int r(T x) {
auto f = [r,x]() { return r(x); };
return 0;
}
int main(int argc, char *argv[])
{
r(0);
return 0;
}
More information about the Gcc-bugs
mailing list