VS2012. Захват переменных во вложенной лямбде
От: alexvn  
Дата: 20.09.13 09:54
Оценка:
Добрый день.

Столкнулся с тем, что при использовании вложенной лямбды происходит неявно захват this. Ниже написан минимальный пример, воспроизводящий проблему.

Пример успешно компилируется в VS2012, Version 11.0.60610.01 Update 3
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86


Подскажите, здесь проблема в студийном компиляторе или так и должно быть по стандарту.
Спасибо!


#include <iostream>

template<typename Fn>
void Execute(Fn fn)
{
    fn();
}

class A
{
public:
    A() : x_(1) { }
public:
    void F()
    {
        auto local_x = 0u;
        Execute([local_x]()
        {
            Execute([=]()
            {
                std::cout << x_ << std::endl;
            });
        });
    }

private: 
    int x_;
};

int main(int argc, char* argv[])
{
    A a;
    a.F();
    return 0;
}
Re: VS2012. Захват переменных во вложенной лямбде
От: Zhendos  
Дата: 20.09.13 15:14
Оценка: 2 (1)
Здравствуйте, alexvn, Вы писали:

A>Добрый день.


A>Столкнулся с тем, что при использовании вложенной лямбды происходит неявно захват this. Ниже написан минимальный пример, воспроизводящий проблему.


A>Пример успешно компилируется в VS2012, Version 11.0.60610.01 Update 3

A>Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86


A>Подскажите, здесь проблема в студийном компиляторе или так и должно быть по стандарту.

A>Спасибо!

Судя по тому, что gcc, clang и Intel'ский компилятор ругаются на незахваченный this,
это баг в компиляторе, причем даже 2013 RC не ругается на такой код.

Запостили баг в M$?
Re[2]: VS2012. Захват переменных во вложенной лямбде
От: alexvn  
Дата: 23.09.13 04:40
Оценка: 3 (1)
Спасибо. Баг запостил.

Здравствуйте, Zhendos, Вы писали:

Z>Здравствуйте, alexvn, Вы писали:


A>>Добрый день.


A>>Столкнулся с тем, что при использовании вложенной лямбды происходит неявно захват this. Ниже написан минимальный пример, воспроизводящий проблему.


A>>Пример успешно компилируется в VS2012, Version 11.0.60610.01 Update 3

A>>Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86


A>>Подскажите, здесь проблема в студийном компиляторе или так и должно быть по стандарту.

A>>Спасибо!

Z>Судя по тому, что gcc, clang и Intel'ский компилятор ругаются на незахваченный this,

Z>это баг в компиляторе, причем даже 2013 RC не ругается на такой код.

Z>Запостили баг в M$?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.