이것은 람다를 호출 할 수없는 람다 클래스의 예제입니다. 그것은 functor로 사용하기위한 것입니다.C++ 람다 크기
template<class T>
struct lambda_class {
T lambda;
void operator()(){ lambda();}
};
이 클래스의 크기는 어느 정도입니까? 내가 필요로하는 것은 그것을 유니온 안에 저장하는 것이지만, 특정 템플릿 인수 없이는 이것을 유니온 안에 넣을 수는 없다. 그 때문에 나는 람다의 최대 크기가 무엇인지 알아야합니다. 컴파일러와 관련된 것은 중요하지 않습니다.
편집 1 : 예, 내 의도는 std :: function이 내부적으로 구현되는 방식을 이해하는 것이 었습니다. 그래서 GNU libstdC++에 비해 읽기가 쉽기 때문에 EASTL을 선택했습니다.
다음 링크가 새로운 배치를 사용하는 것 같다 기능 구현을위한 코드를 포함하는 경우 : 이 https://github.com/electronicarts/EASTL/blob/master/include/EASTL/internal/function.h
내가 unterstand하지 않는 이유 않습니다 저장 타입으로이 맞지? 131 줄과 141 줄에는 펑터와 할당 자의 구조체 정의가 들어 있습니다. 람다가 하나 이상의 캡처 된 변수에 바인딩되면 어떻게됩니까?
_ "어떤 람다도 호출 할 수 없습니다"_ 확실합니까? 이것은 몇 가지 변수 매개 변수와 전달이 필요하지 않습니까? – user0042
왜 템플릿 인수를 지정하기 위해 크기를 알아야합니까? 최대 값은 없으며 제한이 없습니다 (컴파일러 제한을 무시함). – Rakete1111
람다는 캡쳐 할 수 있기 때문에 기계가 처리 할 수있는 것을 제외하고는 크기에 제한이 없습니다. – NathanOliver