2012-03-08 1 views
0

외부 라이브러리의 일부 템플릿 함수를 사용하는 C++ 코드에서 매우 긴 컴파일 시간에 문제가 있습니다.speedup 템플릿 함수 컴파일

예 : 어떻게 든 별도의 헤더 파일에 새로운 기능을

funA := fun<A> 

를 정의하고 사전 컴파일에 대해

//fun.h 
template <class T> 
T fun(T in){ 
... 
} 

//main.cpp 
#include fun.h 
class A{...}; 
int main(){ 
A a,b; 
... 
b=fun<A>(a); //this line causes the long compilation time, because fun is really complicated 
... 
} 

내가 생각하고 있어요. 그래서 메인 클립을 변경할 때마다 빌드 할 필요가 없습니다.

fun<A> 

다시 한번. 그러나 나는 그것을 어떻게하는지 모른다. 나는 클래스와 간단히 미리 컴파일 된 헤더에

typedef class<A> classA; 

을 넣어 작업이 완료 있다고 생각합니다. 그러나 어떻게 함수로 그것을 할 것인가?

+0

시간이 얼마나 * 매우 긴 *인가? 코드가 얼마나 복잡합니까? 다른 많은 템플릿을 인스턴스화합니까? –

+0

GCC에서 미리 컴파일 된 헤더 파일을 사용할 수 있습니다. –

답변

1

wrap_fun.h :

A funA(A a); 

wrap_fun.C :

#include "wrap_fun.h" 
#include "fun.h" 

A funA(A a) 
{ 
    return fun(a); // Should deduce type automatically. 
}