2012-11-28 4 views
3

내가 몇 가지 코드를 검토하고 승인하고 같은 행에 온 :표준 : TR1 :: 기능과 템플릿 값이

std::tr1::function<bool (int, int)>(//etc... 

템플릿 유형의 구문은, bool (int, int) 나에게 익숙했다. 검색을 기반으로 std::tr1::function의 경우이 구문은 함수의 반환 유형 및 매개 변수를 정의하는 데 사용됩니다. 그것은 의미가 있지만 구문이 작동하는 이유는 무엇입니까? 내가 아는 한, C++ 템플릿은 형식 만 지정할 수 있습니까? 내가 예상했던대로

bool (int, int) test; 

가, 문이 컴파일하지 못했습니다

나는대로 코드 형식의 인스턴스를 인스턴스화하려고 노력했다. 최소한 구문은 다음과 같아야합니다. bool (test) (int, int);

bool (int, int)은 C++ 유형으로 처리됩니까? 내 마음 속에서 이것을 조율하는 데 도움이되는 정보가 있습니까?

덕분에, 아담

+0

기능 유형이 완벽하게 좋은 유형을 만듭니다. – eh9

답변

2

는 그것은 함수 유형이라고합니다.

인스턴스를 만들 수는 없지만 해당 인스턴스와 typedef에 대한 포인터를 만들 수 있습니다.

이 질문은 통찰력이 있습니다. What is a function type used for?

+0

답장을 보내 주셔서 감사합니다. 지금까지는 C++에서 이름없는 함수 유형을 지정할 수 있다는 것을 알지 못했습니다. typedef bool (* FnPtr) (int, int);'단순히 bool (int, int) "을 템플릿 유형으로 전달하면 예상대로 작동 함을 확인했습니다. 템플릿 유형 만 이러한 이름이 지정되지 않은 함수 유형을 사용할 수있는 장소? –

+1

@AdamForume 다른 용도로 사용하기에 적합하지 않습니다. – Pubby

관련 문제