1#ifndef BOOST_TEST_EQUAL_CONSTEXPR_HPP
2#define BOOST_TEST_EQUAL_CONSTEXPR_HPP
3
4// Copyright (c) 2015 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/config.hpp> // BOOST_CLANG
11#include <boost/safe_numerics/safe_integer.hpp>
12
13#if BOOST_CLANG == 1
14#pragma GCC diagnostic push
15#pragma GCC diagnostic ignored "-Wunused-comparison"
16#endif
17
18template<class T1, class T2>
19constexpr bool test_equal_constexpr(
20 T1 v1,
21 T2 v2,
22 char expected_result
23){
24 using namespace boost::safe_numerics;
25 // if we don't expect the operation to pass, we can't
26 // check the constexpr version of the calculation so
27 // just return success.
28 if(expected_result == 'x')
29 return true;
30 safe_t<T1>(v1) == v2;
31 v1 == safe_t<T2>(v2);
32 safe_t<T1>(v1) == safe_t<T2>(v2);
33 return true; // correct result
34}
35
36#if BOOST_CLANG == 1
37#pragma GCC diagnostic pop
38#endif
39
40#endif // BOOST_TEST_EQUAL_CONSTEXPR_HPP
41

source code of boost/libs/safe_numerics/test/test_equal_constexpr.hpp