Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / multiprecision / test / git_issue_98.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 //  Copyright 2018 John Maddock. Distributed under the Boost
3 //  Software License, Version 1.0. (See accompanying file
4 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #include <boost/multiprecision/cpp_bin_float.hpp>
7 #include <boost/multiprecision/cpp_int.hpp>
8 #include <boost/multiprecision/cpp_dec_float.hpp>
9 #include <boost/multiprecision/cpp_complex.hpp>
10 #ifdef BOOST_HAS_FLOAT128
11 #include <boost/multiprecision/float128.hpp>
12 #endif
13 #ifdef TEST_GMP
14 #include <boost/multiprecision/gmp.hpp>
15 #endif
16 #ifdef TEST_MPFR
17 #include <boost/multiprecision/mpfr.hpp>
18 #endif
19 #ifdef TEST_MPC
20 #include <boost/multiprecision/mpc.hpp>
21 #endif
22
23 struct A
24 {
25    virtual void g() = 0;
26 };
27
28 void f(A&);
29 void f(boost::multiprecision::cpp_bin_float_50);
30 void f(boost::multiprecision::cpp_int);
31 void f(boost::multiprecision::cpp_rational);
32 void f(boost::multiprecision::cpp_dec_float_50);
33 void f(boost::multiprecision::cpp_complex_100);
34 #ifdef TEST_FLOAT128
35 void f(boost::multiprecision::float128);
36 #endif
37 #ifdef TEST_GMP
38 void f(boost::multiprecision::mpz_int);
39 void f(boost::multiprecision::mpf_float);
40 void f(boost::multiprecision::mpq_rational);
41 #endif
42 #ifdef TEST_MPFR
43 void f(boost::multiprecision::mpfr_float);
44 #endif
45 #ifdef TEST_MPC
46 void f(boost::multiprecision::mpc_complex);
47 #endif
48
49 void h(A& a)
50 {
51    f(a);
52 }