Okay, ça marche bien.
Maintenant, je veux créer une fonction de deux variables.
Tout d'abord, la distribution uniforme dans le main :
Code :
- double lambda(0.01);
- rnd_exponential_t CheeseBurger( rnd_gen,
- boost::exponential_distribution<>( lambda ));
|
Et, je modifie donc la fonction template en :
Code :
- template<class Engine,class Distribution>
- void FonctionTest(boost::variate_generator<Engine,Distribution> VariateGenerator1,
- boost::variate_generator<Engine,Distribution> VariateGenerator2) {
- std::cout << VariateGenerator1() << VariateGenerator2() << std::endl;
- return;
- }
|
Et là, évidemment, le compilateur me sort que Distribution est ambigü, que ça pourrait être boost::exponential_distribution<> ou boost::uniform_01<>... Pile ce que je voulais éviter.
edit : Tiens, j'ai trouvé, fallait juste mettre
Code :
- template<class Engine,class Distribution1,class Distribution2>
- void FonctionTest(boost::variate_generator<Engine,Distribution1> VariateGenerator1,
- boost::variate_generator<Engine,Distribution2> VariateGenerator2) {
- std::cout << VariateGenerator1() << VariateGenerator2() << std::endl;
- return;
- }
|
Message édité par SigH-Max le 30-09-2009 à 18:13:03