Bonjour,
Je cherche à coupler l'utilisation de la bibliothèque rational de Boost au type d'entier à précision arbitraire qu'implémente la bibliothèque GMP.
J'ai vu que Boost à un binding particulier pour rendre les types de GMP et MPFR compatibles avec les bibliothèques de Boost (voir using Boost with MPFR/GMP).
Néanmoins, l'ECM suivant :
produit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <boost/math/bindings/mpfr.hpp> #include <boost/rational.hpp> typedef boost::rational<mpz_class> rat; int main(void) { rat r; return 0; }
Ce que je comprends comme le fait que Boost me tape sur les doigts car je n'utilise pas rational comme il faut. Donc que le type mpz_class (ou mpfr_class qui me donne la même erreur) ne satisfait pas les pré-requis du type abstrait de l'implémentation de boost::rational.$ g++ try.cpp -lgmp -lmpfr -lgmpfrxx -lm
In file included from try.cpp:2:0:
/usr/include/boost/rational.hpp: In instantiation of ‘boost::rational<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >’:
try.cpp:7:7: instantiated from here
/usr/include/boost/rational.hpp:127:1: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
Si c'est cela, le binding (premier include) n'est-il pas censé y pourvoir ?
En vous remerciant.
Partager