Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / multiprecision / cpp_int / value_pack.hpp
1 ///////////////////////////////////////////////////////////////
2 //  Copyright 2013 John Maddock. Distributed under the Boost
3 //  Software License, Version 1.0. (See accompanying file
4 //  LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
5
6 #ifndef BOOST_MP_CPP_INT_VP_HPP
7 #define BOOST_MP_CPP_INT_VP_HPP
8
9 namespace boost {
10 namespace multiprecision {
11
12 namespace literals { namespace detail {
13
14 template <limb_type... VALUES>
15 struct value_pack
16 {
17    constexpr value_pack() {}
18
19    typedef value_pack<0, VALUES...> next_type;
20 };
21 template <class T>
22 struct is_value_pack
23 {
24    static constexpr bool value = false;
25 };
26 template <limb_type... VALUES>
27 struct is_value_pack<value_pack<VALUES...> >
28 {
29    static constexpr bool value = true;
30 };
31
32 struct negate_tag
33 {};
34
35 constexpr negate_tag make_negate_tag()
36 {
37    return negate_tag();
38 }
39
40 }}}} // namespace boost::multiprecision::literals::detail
41
42 #endif // BOOST_MP_CPP_INT_CORE_HPP