1 #ifndef BOOST_TEST_MULTIPLY_CONSTEXPR_HPP
2 #define BOOST_TEST_MULTIPLY_CONSTEXPR_HPP
3 
4 //  Copyright (c) 2019 Robert Ramey
5 //
6 // Distributed under the Boost Software License, Version 1.0. (See
7 // accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
9 
10 #include <boost/safe_numerics/safe_integer.hpp>
11 
12 template<class T1, class T2>
test_multiply_constexpr(T1 v1,T2 v2,char expected_result)13 constexpr bool test_multiply_constexpr(
14     T1 v1,
15     T2 v2,
16     char expected_result
17 ){
18     using namespace boost::safe_numerics;
19     // if we don't expect the operation to pass, we can't
20     // check the constexpr version of the calculation so
21     // just return success.
22     if(expected_result == 'x')
23         return true;
24     safe_t<T1>(v1) * v2;
25     v1 * safe_t<T2>(v2);
26     safe_t<T1>(v1) * safe_t<T2>(v2);
27     return true; // correct result
28 }
29 
30 #endif // BOOST_TEST_MULTIPLY_CONSTEXPR_HPP
31