#include "stdafx.h"
#include <iostream>
using namespace std;
template<class Type>
struct X
{
void run()const
{//Why on earth this doesn't work?
[&]()
{
Type::alloc();
};
}
void run_1()const
{//if this does
Type::alloc();
}
};
struct T
{
static void alloc()
{}
};
int _tmain(int argc, _TCHAR* argv[])
{
X<T> x;
x.run_1();
return 0;
}
AFAIC lambda는 이름이없는 fnc이므로 AFAIC lambda는 컴파일되지 않고 run_1이하는 이유는 무엇입니까?
VS2010 sp beta1을 사용하십시오.람다 식의 범위
내 생각에, 당신이 그것을 잘라내는 방식으로, 람다 함수는'run()'에 선언되어 있어도 X의 멤버가 아닙니다. 그것은 동봉하는 클래스와 아무 관련이 없습니다. –
VS2010에서 반환 한 컴파일 오류를 알려주십시오. –
오류 C2653 : '유형': 클래스 또는 네임 스페이스 이름이 아닙니다. ' –