2012-03-08 12 views
0

私は外部ライブラリからいくつかのテンプレート関数を使う私のC++コードで非常に長いコンパイル時間に問題があります。スピードアップテンプレート関数コンパイル

例:何とか別のヘッダファイルに新しい関数に

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 
... 
} 

私は考えています。ですから、main.cppを変更するたびにビルドする必要はありません。

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. 
} 
関連する問題