File indexing completed on 2025-01-18 09:33:19
0001
0002
0003
0004
0005
0006
0007 #if !defined(FUSION_LIST_07172005_1153)
0008 #define FUSION_LIST_07172005_1153
0009
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/support/void.hpp>
0012 #include <boost/fusion/support/detail/enabler.hpp>
0013 #include <boost/fusion/container/list/detail/cpp03/list_fwd.hpp>
0014 #include <boost/fusion/container/list/detail/cpp03/list_to_cons.hpp>
0015 #include <boost/fusion/support/is_sequence.hpp>
0016 #include <boost/core/enable_if.hpp>
0017
0018 #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
0019 #include <boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp>
0020 #else
0021 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0022 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp")
0023 #endif
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0035 #pragma wave option(preserve: 1)
0036 #endif
0037
0038 namespace boost { namespace fusion
0039 {
0040 struct nil_;
0041 struct void_;
0042
0043 template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
0044 struct list
0045 : detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>::type
0046 {
0047 private:
0048 typedef
0049 detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>
0050 list_to_cons;
0051 typedef typename list_to_cons::type inherited_type;
0052
0053 public:
0054 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0055 list()
0056 : inherited_type() {}
0057
0058 template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
0059 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0060 list(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
0061 : inherited_type(rhs) {}
0062
0063 template <typename Sequence>
0064 BOOST_FUSION_GPU_ENABLED
0065 list(Sequence const& rhs
0066 , typename enable_if<traits::is_sequence<Sequence>, detail::enabler_>::type = detail::enabler)
0067 : inherited_type(rhs) {}
0068
0069
0070
0071
0072
0073
0074
0075
0076 #include <boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp>
0077
0078 template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
0079 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0080 list&
0081 operator=(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
0082 {
0083 inherited_type::operator=(rhs);
0084 return *this;
0085 }
0086
0087 template <typename Sequence>
0088 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0089 typename boost::enable_if<traits::is_sequence<Sequence>, list&>::type
0090 operator=(Sequence const& rhs)
0091 {
0092 inherited_type::operator=(rhs);
0093 return *this;
0094 }
0095 };
0096 }}
0097
0098 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0099 #pragma wave option(output: null)
0100 #endif
0101
0102 #endif
0103
0104 #endif