ускорение компиляции шаблонов - PullRequest
0 голосов
/ 09 марта 2012

У меня проблема с очень долгим временем компиляции моего кода C ++, когда я использую некоторые шаблонные функции из внешней библиотеки.

Пример:

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

Я думаю о том, как определить новоеФункция

funA := fun<A> 

в отдельном заголовочном файле и предварительная компиляция.Поэтому каждый раз, когда я меняю main.cpp, мне не нужно снова и снова собирать

fun<A>

.Но я понятия не имею, как это сделать.Я думаю, что с классами вы просто помещаете

typedef class<A> classA;

в предварительно скомпилированный заголовок, и все готово.Но как это сделать с помощью функций?

1 Ответ

1 голос
/ 09 марта 2012

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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...