내가이 샘플 C++ 코드를 컴파일에 사용할 것을 g ++ 컴파일러 매개 변수를 찾기 위해 노력하고있다 :함수를 std :: function의 템플릿 매개 변수로 사용할 수 있습니까?
cpp를 참조에서#include <stdio.h>
#include <functional>
struct mystruct
{
int a;
int operator()(int y) { return y + 1; }
};
int main()
{
std::function<mystruct> foo;
return 0;
}
는 표준 : : 함수 템플릿 매개 변수 "다른 함수 객체 ... 또는"할 수 있다는 기록 . 나는 큰 프로젝트를 여러 std :: function과 project를 g ++로 빌드 할 수있다. 나는 이러한 코드에 VS2015하지만 컴파일러 아래 구축을 위해 노력하고 불평 :
오류 C2027 : 정의되지 않은 유형의 사용 '표준 : _ Get_function_impl < _Fty>' [ _Fty = MYSTRUCT ]
와 을 나는 g ++에서 작은 샘플 위의 컴파일하려고 -std와 = C++ (11) 또한 comlains :
오류 : 총 '표준 : : 함수 A'는 불완전한 형태를 가지고 있으며, 그래서 생각
을 정의 할 수 없습니다 우리의 큰 buildable project g ++은 아마도 그러한 기능을 제공하는 확장을 전환했을 것입니다.
어디에서 템플릿 매개 변수가 함수 유형 (예 :'int (double, char)')이 아닌 것을 볼 수 있습니까? cppreference는 함수 개체를 저장할 수 있다고 말합니다. 어쨌든,'mystruct'가 둘 이상의'operator()'오버로드를 가졌거나'operator()'가 템플릿 화 되었다면 어떻게 될까요? 안전하게 호출 서명을 입력 - 삭제할 수 없습니다. – chris