의 결과 유형을 가져옵니다내가로 선언 된 템플릿 기능을 전문으로하고자하는 기능
#define SPECIALIZE_READ(read_function) \
template<> boost::function_traits<read_function>::result_type read(std::istream& is) { \
return read_function(is); \
}
:
SPECIALIZE_READ(read_integer)
그래서 내가 부스트 :: function_traits의 길을 갈과 같은 SPECIALIZE_READ를 선언 거라고 생각 : 읽기의 전문화로 간단 그래서 지금은 매크로를 수행하고 싶습니다
하지만 VC++ (2008) 컴파일러는 'boost :: function_traits': 'read_integer'가 'Function'매개 변수의 유효한 템플릿 유형 인수가 아닙니다.
아이디어가 있습니까?
:
가장 쉬운 방법은 반환 형식의 중복을 허용하는 것입니다. C++ 03에서는 그렇게 작동하지 않습니다. C++ 0x에서는 decltype (read_function)을 사용할 수 있습니다. – ltjax
그래? 내가 또 뭘해야하지? 나는 과거에 클래스 메소드와 함께 function_traits를 성공적으로 사용했고, 함수에도이 함수를 사용했지만이 경우에는 작동하지 않는 이유를 모른다. – Robert