http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52688



--- Comment #9 from Paolo Carlini <paolo.carlini at oracle dot com> 2013-03-01 
23:08:40 UTC ---

(In reply to comment #8)

> I just came across the same issue in the context of lambdas (for posterity,

> since I spent time thinking this was specific to lambdas).

> 

> Consider the following source code:

> ---------------------------------------------------

> template<typename T>

> void Foo()

> {

>     static int i = 5;

>     auto bar = [&]() { ++i; };

>     bar();

> }

> 

> int main()

> {

>     Foo<int>();

> }

> ---------------------------------------------------

> GCC 4.7.0 produces the following error:

> 

> # g++-4.7 -std=c++11 main.cpp

> /tmp/ccbZwBzT.o: In function `void Foo<int>()::{lambda()#1}::operator()()

> const':

> main.cpp:(.text+0x1a): undefined reference to `i'

> main.cpp:(.text+0x23): undefined reference to `i'

> collect2: error: ld returned 1 exit status



Can't be exactly the same issue: mainline and 4.7.3 get this one right.

Reply via email to