http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55178
Bug #: 55178
Summary: lambda cannot be found at linkage stage
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
#include <iostream>
class intermed
{
public:
virtual void Proceed(int cb(int))
{
cb(123);
};
};
class smain
{
public:
smain(intermed *Af_intermed)
{
f_intermed=Af_intermed;
}
virtual void run()
{
f_intermed->Proceed([](int num){ std::cerr<<num<<std::endl; return 0;});
}
intermed *f_intermed;
};
int main()
{
//internal f_internal;
intermed f_intermediate; //&f_internal
smain f_main(&f_intermediate);
//
f_main.run();
}
with g++ -std=gnu++11 lambda_test.cpp
produces output:
/tmp/ccTez6Bj.o: In function `smain::run()::{lambda(int)#1}::operator int
(*)(int)() const':
lambda_test.cpp:(.text._ZZN5smain3runEvENKUliE_cvPFiiEEv[_ZZN5smain3runEvENKUliE_cvPFiiEEv]+0x9):
undefined reference to `smain::run()::{lambda(int)#1}::_FUN(int)'
collect2: error: ld returned 1 exit status
I intend to do functions as virtual to show that it not same as
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55015